poj 1001 大数
发布时间:2020-12-14 03:52:14 所属栏目:大数据 来源:网络整理
导读:坑 不读说。。。上代码。。。。poj的discus上有测试。。。。慢慢测就是了。。。 AC代码如下: #include iostream#include cstdio#include cstring#include algorithmusing namespace std;int num[10000];char R[20];int N,point,A;void init(){int last = st
坑 不读说。。。上代码。。。。poj的discus上有测试。。。。慢慢测就是了。。。 AC代码如下: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int num[10000]; char R[20]; int N,point,A; void init(){ int last = strlen( R ); while( last > 0 ){ if( R[last-1] == '0' ){ last--; }else{ break; } } memset( num,sizeof( num ) ); A = 0; int i; for( i = 0; i < last && R[i] != '.' ; i++ ){ A = A * 10 + R[i] - '0'; } point = 0; if( i < last ){ i++; while( i < last ){ A = A * 10 + R[i++] - '0'; point++; } } int temp = A; num[0] = 0; while( temp ){ num[0]++; num[num[0]] = temp % 10; temp /= 10; } } void calc(){ for( int i = 2; i <= N; i++ ){ int mod = 0; for( int i = 1; i <= num[0]; i++ ){ mod = mod + num[i] * A; num[i] = mod % 10; mod /= 10; } while( mod ){ num[++num[0]] = mod % 10; mod /= 10; } } } void out(){ if( num[0] <= point * N ){ cout << '.'; for( int i = point * N; i > num[0]; i-- ){ cout << 0; } for( int i = num[0]; i >= 1; i-- ){ cout << num[i]; } cout << endl; }else{ for( int i = num[0]; i > point * N; i-- ){ cout << num[i]; } if( point != 0 ){ cout << '.'; for( int i = point * N; i >= 1; i-- ){ cout << num[i]; } } cout << endl; } } int main(){ while( scanf( "%s%d",R,&N ) != EOF ){ if( N == 0 ){ cout << 1 << endl; continue; } init(); if( A == 0 ){ cout << 0 << endl; break; } calc(); out(); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |