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 }

 

posted @ 2012-09-19 08:55  晨风世界  阅读(298)  评论(0编辑  收藏  举报