hdu5241Friends 大数乘法
2015-05-31 13:57
85 查看
//可以知道各种语言相互独立
//故而知道是2的乘方
//由样例可知是32的n次方
//剩下的是一个大数乘法
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 30050 ;
const int mod = 100 ;
int num[maxn] ;
int len ;
int solve(int n)
{
memset(num , 0 , sizeof(num)) ;
num[1] = 1;len = 1;
for(int i = 1;i <=n ;i++)
{
int c = 0 ;
for(int j = 1;j <= len; j++)
{
num[j] *= 32 ;
num[j] += c ;
c = num[j]/mod ;
num[j] %= mod ;
}
while(c)
{
num[++len] = c%mod ;
c/=mod ;
}
}
}
int main()
{
int T ;
int cas =0 ;
scanf("%d" , &T) ;
while(T--)
{
int n ;
scanf("%d" , &n) ;
solve(n) ;
printf("Case #%d: " , ++cas) ;
for(int i = len;i > 0;i--)
{
if(i!=len)
printf("%02d" ,num[i]) ;
else
printf("%d" , num[i]) ;
}
puts("") ;
}
}
//故而知道是2的乘方
//由样例可知是32的n次方
//剩下的是一个大数乘法
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 30050 ;
const int mod = 100 ;
int num[maxn] ;
int len ;
int solve(int n)
{
memset(num , 0 , sizeof(num)) ;
num[1] = 1;len = 1;
for(int i = 1;i <=n ;i++)
{
int c = 0 ;
for(int j = 1;j <= len; j++)
{
num[j] *= 32 ;
num[j] += c ;
c = num[j]/mod ;
num[j] %= mod ;
}
while(c)
{
num[++len] = c%mod ;
c/=mod ;
}
}
}
int main()
{
int T ;
int cas =0 ;
scanf("%d" , &T) ;
while(T--)
{
int n ;
scanf("%d" , &n) ;
solve(n) ;
printf("Case #%d: " , ++cas) ;
for(int i = len;i > 0;i--)
{
if(i!=len)
printf("%02d" ,num[i]) ;
else
printf("%d" , num[i]) ;
}
puts("") ;
}
}