【2018/10/04】【WOJ 4036】K進位制
阿新 • • 發佈:2018-12-13
【題目】
題目描述:
給定一個 (2 ≤ ≤ 16)進位制數 ,判斷 是否能被 整除。
輸入格式:
第一行是一個整數 (1 ≤ ≤ 50),表示測試點數量。
對於每組資料,第一行一個整數 ,表示進位制。
第二行一個 進位制數,表示 。保證 是合法的 進位制數,沒有前導 0,且只由 0 - 9 、A - F 構成。
輸出格式:
如果 可以被 整除,輸出 “yes”,否則輸出 “no”。
樣例資料:
輸入
2 16 2D 10 19
輸出
yes no
備註:
對於 40% 的資料, 的長度不超過 5。
對於 100% 的資料, 的長度不超過 100000。
【分析】
首先很容易可以推出
那麼對於一個 進位制數,它的 就直接可以丟掉(模 等於 1)
因此累加每一位上的數,判斷模 是否等於 0 就可以了
【程式碼】
#include<cstdio> #include<cstring> #include<algorithm> #define N 100005 using namespace std; char s[N]; int main() { // freopen("kbased.in","r",stdin); // freopen("kbased.out","w",stdout); int n,i,k,l; scanf("%d",&n); while(n--) { scanf("%d",&k); scanf("%s",s+1); l=strlen(s+1); int sum=0; for(i=1;i<=l;++i) { if(s[i]>='0'&&s[i]<='9') sum+=s[i]-'0'; if(s[i]>='A'&&s[i]<='F') sum+=s[i]-'A'+10; } if(sum%(k-1)==0) printf("yes\n"); else printf("no\n"); } // fclose(stdin); // fclose(stdout); return 0; }