这个相对于两个大整数的运算来说,只能说是,low爆了。
只要利用好除法的性质,这类题便迎刃而解。O(∩_∩)O哈哈~
//大整数除一个int数#include#include #include using namespace std;char s[1000],result[1000];int main(){ long long divis; int n,i,k,flag,len; char c; while( cin >> s >> n ) { len=strlen(s); divis=flag=0; for(i=k=0; i =n&&!flag) { result[k++]=divis/n+'0'; divis=divis%n; flag=1; } else if(flag) { result[k++]=divis/n+'0'; divis=divis%n; } } if(!k) result[k++]='0'; result[k]='\0'; cout< <
接着是大整数对小整数的求余,但由于过于简单,加点限制。嘿嘿!看题
Case #1:NoCase #2:YesCase #3:Yes
Hint
对于第一组测试数据:111 mod 5 = 1,公式不成立,所以答案是”No”,而第二组测试数据中满足如上公式,所以答案是 “Yes”。 今年百度之星的原题,本就是一个大数除小整数的求余,又由于,这个大整数有点特殊。这个余数,也是循环出现的。
代码如下:
//百度之星 Aint x, k, c, T, cnt;long long m;int main(){ cin >> T ; for(cnt=1; cnt<=T; cnt++) { cin >> x >> m >> k >> c ; cout << "Case #" << cnt << ":" << endl ; int md = 0 ; for(int i=0; i