提示可以使用long long int对付GNU C++,使用__int64对付VC6
就是说明程序中值有可能非常大,long的值肯定不够。32位机器上long是4字节,也就是32位,__int64 是64位。
程序中对n的值有限制,公式也给我们了,可以用个数组把所有的n值对应的高位,低位求出。
#include
int main(void)
{
int n, i;
__int64 g[34] = {1};
__int64 d[34] = {0};
for (i = 1; i < 34; i++)
{
g[i] = 3 * g[i - 1] + 2 * d[i - 1];
d[i] = g[i - 1] + d[i - 1];
}
while (scanf("%d", &n), n != -1)
printf("%I64d, %I64d\n", g[n], d[n]);
return 0;
}
你好!!
没有错误吧:
测试如下:
3
41,15
6
2131,780
1
3,1
-1
Press any key to continue