NYOJ 114 某种序列
2013-12-10 00:52
204 查看
NYOJ114链接
好吧 这道题说是水题中不太水的题 我卡了, 开始他妹的没注意看题 弄错了, 不过还是自己对字符串的处理不太熟悉, 这道题真心不太难的! 当然是想明白后 1:首先这道题输入三个个数, 用字符串存储, 输入后把他们三个字符串换成用整型数组存储 2:这道题是An = An-1(是n-1 可不是An - 1, n-1是一个整体)+ An-2 + An-3;所以在处理的时候是使用迭代法,依次替换掉,举个例子说:a, b, c, d; a,b,c三个数相加得到结果给d,对于这道题来说迭代就是把b的值给a, c的值给b, d的值给c 这样就完成了对三个数的更新 下次依旧是a,b,c三个数相加依旧是按前几句说说的那样更新值 这道题的具体怎样更新在代码中这道题关键就是这了 弄明白就可以解决了
#include<stdio.h> #include<string.h> char a[30], b[30], c[100]; int main() { int i, j, a1[100], b1[100], c1[100], len1, len2, len3, k, d[100], w, top, sum; //好吧 我去他,自己开始脑残的在想三个字符串相加 还得迭代 怎么去迭代呢 靠, 就是没想 // 把字符串变成int型的不完了 我去他 while(scanf("%s%s%s", a, b, c) != EOF) { memset(a1, 0, sizeof(a1)); memset(b1, 0, sizeof(b1)); memset(c1, 0, sizeof(c1)); len1 = strlen(a); len2 = strlen(b); len3 = strlen(c); top = 0; for(i = len1 - 1; i >= 0; i--) { a1[top++] = a[i] - '0'; } top = 0; for( i = len2 - 1; i >= 0; i-- ) b1[top++] = b[i] - '0'; top = 0; for( i = len3-1; i >= 0; i-- ) c1[top++] = c[i] - '0';//前面三个for循环就是转换为int型的 for(w = 3; w < 100; w++)//这就是迭代的循环了 { memset(d, 0, sizeof(d));//这个清零是应该是不能去掉的,去掉会出错 私下自己可以试试 k = 0;//这别忘了清零 for(i = 0; i < 100; i++) { sum = a1[i] + b1[i] + k; d[i] = sum % 10; k = sum / 10;//这的k是装的进位 } k = 0; for(i = 0; i < 100; i++) { sum = d[i] + c1[i] + k; k = sum / 10; d[i] = sum % 10; } for(i = 0; i < 100; i++)//这就是在更新替换数组里面的值 { a1[i] = b1[i]; b1[i] = c1[i]; c1[i] = d[i]; } } for(i = 99; i >= 0; i--) if(c1[i]) break; if(i < 0)//如果没有这个if判断当输入为三个零时 i比零小了, 后面会输不出值得 printf("0\n"); else { for(j = i; j >= 0; j--) printf("%d", c1[j]); printf("\n");//他妹的 我可以说我提交时晕蛋的没加这个换行不 } } return 0; }
相关文章推荐
- nyoj114 某种序列(大数)
- NYOJ 114 某种序列(大数加)
- nyoj114某种序列(大数)
- NYOJ 114 某种序列(java)
- nyoj 114 某种序列
- NYOJ 114 某种序列
- NYOJ-114 某种序列
- nyoj_114_某种序列_201403161700
- nyoj 某种序列 114 (大数&&滚动数组) 好题
- nyoj114某种序列
- 某种序列(nyoj 114)
- NYOJ——114题某种序列
- NYOJ114 某种序列
- NYOJ 114 某种序列【大数】
- nyoj 114某种序列《乘,加》
- NYOJ-114-某种序列
- nyoj-114 某种序列
- NYOJ 114 某种序列(三个数大数相加)
- nyoj--114--某种序列(滚动数组)