题目大意:判断一个很大的二进制能否被131071整除。在二进制转十进制的过程中不断取模,最后判断结果是否是0就可以了。
1 #include <cstdio> 2 #include <cstring> 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 char str[200]; 10 while (gets(str)) 11 { 12 int t = 0; 13 bool stop = false; 14 do 15 { 16 int len = strlen(str); 17 for (int i = 0; i < len; i++) 18 { 19 if (str[i] == '#') 20 { 21 stop = true; 22 break; 23 } 24 if (str[i] == '0' || str[i] == '1') 25 { 26 t = t * 2 + str[i] - '0'; 27 if (t >= 131071) t %= 131071; 28 } 29 } 30 } while (!stop && gets(str)); 31 if (t == 0) printf("YES "); 32 else printf("NO "); 33 } 34 return 0; 35 }
话说这个输入还是小小纠结了一下。