当前位置: 代码迷 >> 综合 >> poj 2305 Basic remains 高精度取余
  详细解决方案

poj 2305 Basic remains 高精度取余

热度:60   发布时间:2024-01-19 05:38:24.0

题意:

裸的高精度取余。

分析:

http://blog.csdn.net/sepnine/article/details/44092055有poj 1220任意进制转换的代码,这题用到其中的一部分,可作对比。

代码:

//poj 2305
//sep9
#include <iostream>
using namespace std;
int b,m;
char s1[1024],s2[16],ans[16];
int p[1024];int main()
{while(scanf("%d",&b)==1&&b){scanf("%s%s",s1,s2);int k,i;k=strlen(s2);for(m=i=0;i<k;++i)m=m*b+s2[i]-'0';k=strlen(s1);for(i=k-1;i>=0;--i)p[k-1-i]=s1[i]-'0';for(i=k-1;i>0;--i){p[i-1]+=p[i]%m*b;p[i]/=m;}int l=0,a=p[0]%m;if(!a){puts("0");continue;}while(a){ans[l++]=a%b;a/=b;}for(i=l-1;i>=0;--i)printf("%d",ans[i]);puts("");}return 0;	
} 

  相关解决方案