#include<bits/stdc++.h> using namespace std; int p,len=1; int a[1005]; int main(){ // freopen("Mason.in","r",stdin); // freopen("Mason.out","w",stdout); scanf("%d",&p); printf("%d\n",(int)(p*log10(2))+1); p--; a[0]=2; for(int i=0;i<p;i++){ for(int j=0;j<len;j++)a[j]*=2; int len2=0; for(int j=0;j<len;j++){ if(a[j]>=10){ a[j]-=10; a[j+1]++; if(j==len-1)len2++; } } len=min(len+len2,500); } for(int i=499;i>=1;i--)printf("%d",a[i]); printf("%d",a[0]-1); return 0; }
时间: 2024-04-18 16:25:18 浏览: 99
C++ using namespace std 详解
3星 · 编辑精心推荐
这段代码是一个求2的p次方的结果的程序。它使用了一个数组a来保存结果的每一位数字,数组长度为1005。其中,len表示当前结果的位数,初始为1,p为输入的指数。程序首先读取p的值,然后输出结果的位数,即(int)(p*log10(2))+1。接着,将数组a的第一位设置为2,并进行p次循环。每次循环中,将数组中的每一位数字乘以2,并进行进位处理。进位处理会将大于等于10的数字减去10,并将下一位加1,如果最后一位也需要进位,则将len加1。最后,从数组的高位到低位依次输出数字,并输出最低位减1的结果。
需要注意的是,这段代码中的文件输入输出部分被注释掉了,所以可以忽略这部分。如果需要从文件读取输入或将结果输出到文件,请将注释取消。
阅读全文