poj2305-Basic remains(进制转换 + 大整数取模)
2015-10-02 14:03
417 查看
进制转换 + 大整数取模
一,题意:
在b进制下,求p%m,再装换成b进制输出。
其中p为b进制大数1000位以内,m为b进制数9位以内
二,思路:
1,以字符串的形式输入p,m;
2,转换:字符串->整数 十进制->b进制;
3,十进制下计算并将整形结果转换成字符串形式,并倒序储存;
4,输出。
三,步骤:
1,输入p[],m[];
2,字符串->整形 + 进制->b进制:
i,进制转换语句:m2 = m2*b + m[j]-'0';
ii,大整数取模,大整数可以写成这样的形式:
12345 = ( ( (1 * 10+2) * 10+3) * 10+4) * 10+5
如二进制数(1100)=( ( (1 * 2+1) * 2+0) * 2+0) (2表示进制数)
为避免大数计算,进制转化时顺便求模
p2 = (p2*b + p[i]-'0') % m2;
3,转换并倒序储存: ans[k++] = p2%b + '0'; p2 /= b ;
4,倒序输出
View Code
版权声明:本文为博主原创文章,未经博主允许不得转载。
一,题意:
在b进制下,求p%m,再装换成b进制输出。
其中p为b进制大数1000位以内,m为b进制数9位以内
二,思路:
1,以字符串的形式输入p,m;
2,转换:字符串->整数 十进制->b进制;
3,十进制下计算并将整形结果转换成字符串形式,并倒序储存;
4,输出。
三,步骤:
1,输入p[],m[];
2,字符串->整形 + 进制->b进制:
i,进制转换语句:m2 = m2*b + m[j]-'0';
ii,大整数取模,大整数可以写成这样的形式:
12345 = ( ( (1 * 10+2) * 10+3) * 10+4) * 10+5
如二进制数(1100)=( ( (1 * 2+1) * 2+0) * 2+0) (2表示进制数)
为避免大数计算,进制转化时顺便求模
p2 = (p2*b + p[i]-'0') % m2;
3,转换并倒序储存: ans[k++] = p2%b + '0'; p2 /= b ;
4,倒序输出
#include<iostream> #include<string.h> using namespace std; const int N=1010; //大数位数 int main(){ int b; //进制数 while(cin>>b&&b){ char p , m , ans ; int p2 = 0 , m2 = 0; //定义用来储存十进制的被除数、除数 cin>>p>>m; for(int j=0 ; j<strlen(m) ; j++){ //把n进制字符串除数转换为十进制数字除数 m2 = m2*b + m[j]-'0'; } for(int i=0 ; i<strlen(p) ; i++){ //把n进制字符串被除数转换为十进制数字被除数 p2 = (p2*b + p[i]-'0') % m2; //为避免大数计算,进制转化时顺便求模 } if(!p2) cout<<0<<endl; else{ int k = 0; while(p2){ ans[k++] = p2%b + '0'; //把10进制数 转换为 n进制字符串倒序并存入 P[] 中 p2 /= b; } for(int i = k-1 ; i >= 0 ; i--) cout<<ans[i]; cout<<endl; } } return 0; }
View Code
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- HDU 1702 ACboy needs your help again!(栈和队列)
- poj 1995 Raising Modulo Numbers【快速幂】
- 解决:CWnd::SetWindowText报Assertion failure
- AIDL调用第三方应用程序服务中的方法
- wait函数返回值总结http://blog.csdn.net/astrotycoon/article/details/41172389
- system函数的总结 http://blog.csdn.net/astrotycoon/article/details/40626355
- 【MongoDB】2014-07-25T11:00:48.634+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:1
- linux避免僵死进程方法总结 http://blog.csdn.net/astrotycoon/article/details/39717143
- waitpid(or wait)和SIGCHILD的关系 http://blog.csdn.net/liuxingen/article/details/38350347
- Linux的system()和popen()差异 http://blog.csdn.net/liuxingen/article/details/47057539
- Sails的简单学习
- Treat your machine fair
- Learning Spark - LIGHTNING-FAST DATA ANALYSIS 第四章 - (4)
- Aizu 2304 Reverse Roads
- Aizu 2300 Calender Colors dfs
- 2015 Autumn Training #0
- Aizu 2306 Rabbit Party DFS
- Aizu 2305 Beautiful Currency DP
- Aizu 2304 Reverse Roads 费用流
- Aizu 2302 On or Off dfs/贪心