sicily Big Integer
大二了,自己写code还是那么菜,以前做过的一些水题没有记录再次回过头来又忘得七七八八了,忽然觉得是时候好好地coding了,记录一些解题的思路帮助自己以后容易看懂。呵呵,这绝对绝对是水题,大牛别耻笑。。哪里写得不对的地方还请大家多多指教啊,小弟感谢不尽。多交流多学习,每天进步一点。
这道题是数论里面的内容,涉及到高精度存储长整数(一般都是存在char数组里面,提取每一位时减去‘0’就行了)
题目关键点:高精度存数,模拟竖式除法运算(即我们小学用的笔算),从高位开始处理,处理每一位时用前一位的
余数乘以10加上当前位,取余。。动手一下就容易明白了
View Code
1 #include<iostream> 2 using namespace std; 3 int get_mod(char str[],int b) //大整数对每一个basic集合里的整数取余 4 { 5 int g=0; 6 for(int i=0;str[i]!='\0';i++) 7 { 8 int h=g*10+(str[i]-'0'); 9 g=h%b; 10 } 11 return g; 12 } 13 int main() 14 { 15 int t; 16 cin>>t; 17 while(t--) 18 { 19 int n; 20 cin>>n; 21 int basic[n+1]; 22 for(int i=1;i<=n;i++) 23 { 24 scanf("%d",&basic[i]); 25 } 26 char str[401]; 27 cin>>str; 28 cout<<"("; 29 for(int i=1;i<=n;i++) 30 { 31 int r=get_mod(str,basic[i]); 32 if(i==1) cout<<r; 33 else 34 cout<<","<<r; 35 } 36 cout<<")"<<endl; 37 } 38 }