POJ——2506(找规律加大数乘法 )
来源:互联网 发布:js webkittransition 编辑:程序博客网 时间:2024/05/21 23:44
题目链接:http://poj.org/problem?id=2506
源代码:
#include<iostream>
using namespace std;
int main()
{
int i,j;
long long a[64]; //存储前63个
int b[200][255]; //存储后187个
int len[200];
//存储后187个的长度
a[0]=1; //当n=0的时候,结果为1奥
a[1]=1;
a[2]=3;
for(i=3;i<64;i++)
if(i%2==0) a[i]=a[i-1]*2+1; //当偶数时,结果为前面的二倍加一
else a[i]=a[i-1]*2-1; //当奇数时,为二倍减一
memset(b,0,sizeof(b));
long long mid=a[63]; //把n=63的时候,赋值给b【0】
int q=0;
while(mid>0)
{
b[0][q++]=mid%10;
mid/=10;
}
len[0]=q;
int mid1;
int p;
for(i=1;i<200;i++)
{
if(i%2==1) mid1=b[i-1][0]*2+1; //处理最低位
else mid1=b[i-1][0]*2-1;
if(mid1>=10)
{
b[i][0]+=mid1%10;
b[i][1]+=mid1/10;
}
else b[i][0]=mid1;
q=1;
p=1;
while(q<len[i-1])
{
mid1=b[i-1][q]*2;
if(mid1>=10)
{
b[i][p]+=mid1%10;
b[i][p+1]+=mid1/10;
if(q==len[i-1]-1) p++;
}
else b[i][p]+=mid1;
q++;
p++;
}//end while
len[i]=p;
} //end for
/*for(i=0;i<40;i++)
{
for(j=len[i]-1;j>=0;j--)
cout<<b[i][j];
cout<<endl;
}*/
int n;
while(cin>>n)
{
if(n<64)
cout<<a[n]<<endl;
else
{
for(j=len[n-63]-1;j>=0;j--)
cout<<b[n-63][j];
cout<<endl;
}
}
}
- POJ——2506(找规律加大数乘法 )
- POJ 1068(找规律)
- poj 2440 DNA (dp|递推|找规律|矩阵乘法)
- hdu1517 找规律/乘法博弈
- 规律矩阵找数
- HDU——1005(找规律)
- Lightoj1202——Bishops(找规律)
- POJ 1450 Gridland(我的水题之路——找规律)
- POJ 1747 Expression(找规律 递归)
- 【POJ】1663 - Number Steps(找规律)
- poj 2800 找规律
- Steps——找规律
- HDU6154——找规律
- hdu 5084 HeHe (矩阵乘法 找规律)
- HDU5239(线段树,找规律,快速乘法)
- 博弈 找规律 poj 2484
- POJ 1019 数学找规律
- POJ-2368-Buttons [找规律]
- 解读ExpandableListView源码样式
- 设计公共API的六个注意事项
- 如何在 Xcode 4.2 之后建立WindowBased Application
- attribute 用法 section 部分
- Oracle 9i for linux
- POJ——2506(找规律加大数乘法 )
- SQLite下载与安装
- Activity间跳转传递对象集合List
- OpenStack 谈谈云计算那点事
- java统计字符串中子字符串出现次数
- 百人戴帽子问题
- dbus/qt检测U盘:Failed to connect to socket。。。 system_bus_socket: Connection refused解决
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- 用 Ganglia 监控hadoop集群