|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
int n, S, lc, ls = 0;
int i;
void xxx(int a[],int b[],int c[],int i) {
int k = 1, flag, ll = 1;
flag = i;
do {
a[k] = i % 10;
flag = flag / 10;
k++;
ll++;
} while (!flag);
ll--;
for (int j = 1; j <= i; j++)
{
b[j] = a[j];
}
lc = ll + ll;
for (k = 1; k <= ll; k++)
{
for (int j = 1; j <= ll; j++)
{
c[k + j - 1] += a[k] * b[j];
c[k + j] += a[k] * b[j] / 10;
c[k + j - 1] = a[k] * b[j] % 10;
}
}
}
void addd(int sum[], int a[], int b[], int c[]) {
for (int k = 1; sum[k] != 0; k++)
{
ls++;
}
for (int j = 1; j <= lc; j++)
{
b[j] = c[j];
}
for (int k = 1; k <= ls; k++)
{
b[k] = sum[k];
}
ls = max(lc, ls) + 1;
for (int j = 1; j <= ls; j++)
{
sum[j] += a[j] + b[j];
sum[j + 1] = sum[j] / 10;
sum[j] = sum[j] % 10;
}
}
int main() {
int a[100], b[100], c[100], sum[100];
cin >> n;
a[1] = 1;
sum[1] = 1;
for (i = 1; i <= n; i++)
{
xxx(a,b,c,i);
addd(sum,a,b,c);
}
if (sum[ls] == 0 && ls > 0)ls--;
for (i = ls; ls > 0; ls--)
{
cout << sum[i];
}
return 0;
}
执行到 a[k] = i % 10;这条语句时发生访问权限冲突,求大神指导,脑袋想不出来啦
错误1:
xxx()函数里
do {
a[k] = i % 10;
flag = flag / 10;
k++;
ll++;
} while (!flag); //循环条件错误,当flag 初值小于10时,是个死循环,因此,循环结束条件应该是 while(flag)
错误2:
main()函数里
int a[100], b[100], c[100], sum[100]; 数组没有初始化就使用。
应该写成
int a[100]={0}, b[100]={0}, c[100]={0}, sum[100]={0};
|
|