2018.10.04 NOIP模擬 K進位制(模擬)
阿新 • • 發佈:2018-12-13
描述
給定一個K(2<=K<=16)進位制數a,判斷a是否能被K-1整除。
輸入
第一行是一個整數t(1<=t<=50),表示測試點數量。 對於每組資料,第一行一個整數K,表示進位制。 第二行一個K進位制數,表示a。保證a是合法的K進位制數,沒有前導0,且只由’0’-‘9’、’A’-‘F’構成。
輸出
如果a可以被K-1整除,輸出”yes”,否則輸出”no”。
樣例輸入
2 16 2D 10 19
樣例輸出
yes no
提示
對於40%的資料,a的長度不超過5。 對於100%的資料,a的長度不超過100000。
簽到題,直接瞎模擬就行了。 程式碼:
#include<bits/stdc++.h>
using namespace std;
int t,n,k,mod,mul;
char s[100005];
inline int calc(char x){
if(isdigit(x))return x-'0';
return x-'A'+10;
}
int main(){
freopen("kbased.in","r",stdin);
freopen("kbased.out","w",stdout);
scanf("%d",&t);
while(t--){
scanf("%d%s",&k,s),n=strlen(s),reverse(s,s+n),mod=0,mul= 1;
for(int i=0;i<n;++i){
(mod+=mul*calc(s[i]))%=(k-1);
mul=mul*k%(k-1);
}
if(mod)puts("no");
else puts("yes");
}
return 0;
}