刷题第三天:南邮NOJ【2的N次方】

来源:互联网 发布:网络代销挣钱吗 编辑:程序博客网 时间:2024/05/17 20:21
2的N次方
时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 2567            测试通过 : 1253

比赛描述

编程精确计算2的N次方。(N是介于100和1000之间的整数)。



输入

正整数N (100N1000)

输出

2N次方

样例输入

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;

}


0 0
原创粉丝点击