1604: 大一上之初出茅庐
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 736 Solved: 211
[Submit][Status][Web Board]
Description
四年的前的今天,你正想着我应该去哪里上什么样的大学,你想你会学…,结果是很幸运的来到了浙江中医药大学,啊哈,既然来了,就不废话了,这个时候的你应该可以帮我算算A+B。给你你俩数,你把第一个数的奇数位的数与第二个数的偶数位的数相加得到一个数,再把第一个数的偶数位和第二个数的奇数位相加得到一个数,再输出这两个新得到的数的和。
Input
输入两个数A,B《范围不超过 long long 》
Output
输出上述和
Sample Input
123 456
Sample Output
21
WA了无数次的代码。。。然后借同学的代码看,在一点点对比一次次提交,为自己的记录又贡献了那么多的WA。。。。发现了以下3个问题!!!但是除了1我都不太明白为什么。。。
- 大数组要定义main函数外,虽然我觉得200不是很大。。但是,就要在外面!!而且,虽然long long 差不多19位,但是这个长度还是要定义的很大,因为我用20、31都不行都WA!(全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的。(c语言程序在运行时会动态创建一个堆栈段,里面存放着调用栈,保存着函数的调用关系和局部变量。)如果数组太大,可能会造成栈溢出。)
- 循环的时候判断条件不可以是小于其长度,而是元素不是结束符;如果改成len就会WA。。
- 变成数字的时候要-48而不是-'0',我不知道为什么不可以。
#include<bits/stdc++.h>
using namespace std;
char s[200],v[200]; //放在main函数里会超时
int main()
{
while(~scanf("%s%s",s,v))
{
int sum1=0,sum3=0;
for(int i=0;s[i]!='\0';i++)//这里要用'\0',不然会WA
sum1+=s[i]-48; //如果48换成'0'也会超时
for(int i=0;v[i]!='\0';i++)
sum3+=v[i]-48;
int x=sum1+sum3;
cout<<x<<endl;
}
return 0;
}