总提交 : 2567 测试通过 : 1253
比赛描述
编程精确计算2的N次方。(N是介于100和1000之间的整数)。
输入
正整数N (100≤N≤1000)
输出
2的N次方
样例输入
200
样例输出
1606938044258990275541962092341162602522202993782792835301376
题目来源
NUPT
//程序基本思路,第一个循环用来乘方,每循环一次乘一个2;第二个循环用来按位乘,将数用数组表示,每次循环从数组的第一位依次乘2,直至当前数的最后一位。其中count用来统计这个数的位数。Flag在发生进位时起作用。
#include<stdio.h>
int main()
{
intn,i,j;
intnum[305]={0};
intflag=0,count=1;
num[0]=2;
scanf("%d",&n);//读入累乘次数
for(i=1;i<n;i++)//第一循环
{
for(j=0;j<count;j++)//第二循环
{
num[j]*=2;
num[j]+=flag;//将后一位的进位加到当前位,当为第一位时,flag=0.
flag=0;//消除进位作用,以免再下一步中影响结果。
if(num[j]>=10)//判断是否发生进位
{
if(num[count-1]>=10)//当最高位发生进位时,位数加一
count++;
flag=1;//进位标志
num[j]-=10;//将当前位的进位消除
}
}
}
for(i=count-1;i>=0;i--)//循环输出
{
printf("%d", num[i]);
}
printf("\n");
return0;
}