没有封面图
题意:对于给定的\[b\]进制数\[y\],定义\[f(y)\]表示其\[y\]在\[b\]进制下的数位和。现在有这样的一个命题:对于任意的\[b\]进制数\[y\]和给定的\[b\]进制数\[x\],如果\[f(y)\]整除\[x\],则\[y\]也整除\[x\]。判断给定\[b\]和\[x\]下命题正确性。
思路:结论是,当\[b\equiv 1 \pmod x\]时,命题成立。原因在于,对于\[b\]进制的数\[y\],可以将其表示为\[y=c_0*b^0+c_1*b^1+c_2*b^2+\dots+c_{n-2}*b^{n-2}+c_{n-1}*b^{n-1}\]。可以发现,如果\[b\equiv 1\pmod x\],那么由于有\[A\equiv B \pmod p\Leftrightarrow f(A)\equiv f(B)\pmod x\],所以,在这种情况下,有 \[ \begin{equation} c_0*b^0+c_1*b^1+c_2*b^2+\dots+c_{n-2}*b^{n-2}+c_{n-1}*b^{n-1}\equiv c_0+c_1+c_2+\dots+c_{n-2}+c_{n-1}\pmod x \end{equation} \]
\[c_0+c_1+c_2+\dots+c_{n-2}+c_{n-1}\]就是题目中的\[f(y)\]。所以,结论成立。
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <unordered_map>
#include <vector>
#define mst(a, b) memset((a), (b), sizeof(a))
#define debug printf("debug\n")
#define INF 0x3f3f3f3f
#define lson lef, mid, rt << 1
#define rson mid + 1, rig, rt << 1 | 1
const int maxn = 1e5 + 5;
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int main()
{
int T;
scanf("%d", &T);
while (T--) {
ll b, x;
scanf("%lld %lld", &b, &x);
if (b < x) {
puts("F");
} else {
if (b % x == 1LL)
puts("T");
else
puts("F");
}
}
return 0;
}