题目1471: A+B without carry (二)
****************************
* 日期:2013-3-25
* 作者:SJF0115
* 题号: 题目1471: A+B without carry
* 来源:http://acmclub.com/problem.php id=1471
* 结果:AC
* 来源:2013年浙江大学复试机试模拟题
* 总结:
**********************************/
#include
#include
#include
int main()
{
int a,b,index;
int c[12];
//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);
while(scanf("%d %d",&a,&b)!=EOF){
//正确答案
printf("%d ",a + b);
//求小名的答案
if(a == 0 && b == 0){
printf("%d",a + b);
}
index = 0;
while(a || b){
int sum = a % 10 + b % 10;
if(sum > 9){
sum -= 10;
}
c[index++] = sum;
a /= 10;
b /= 10;
}
//去掉前导0
index = index - 1;
while(c[index] == 0 && index > 0){
index--;
}
//输出答案
for(int i = index;i >= 0;i--){
printf("%d",c[i]);
}
printf("\n");
}
return 0;
}
/*********************************
* 日期:2013-3-25
* 作者:SJF0115
* 题号: 题目1471: A+B without carry
* 来源:http://acmclub.com/problem.php id=1471
* 结果:AC
* 来源:2013年浙江大学复试机试模拟题
* 总结:
**********************************/
#include
#include
#include
int main()
{
int a,b,index;
int c[12];
//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);
while(scanf("%d %d",&a,&b)!=EOF){
//正确答案
printf("%d ",a + b);
//求小名的答案
if(a == 0 && b == 0){
printf("%d",a + b);
}
while(a || b){
int sum = a % 10 + b % 10;
if(sum > 9){
sum -= 10;
}
c[index++] = sum;
a /= 10;
b /= 10;
}
//去掉前导0
index = index - 1;
while(c[index] == 0 && index > 0){
index--;
}
//输出答案
for(int i = index;i >= 0;i--){
printf("%d",c[i]);
}
printf("\n");
}
return 0;
}
第二种方法时忘记了a = 0 b = 0的情况wrong了好几次.........
这种方法很有意思,自己没有想到.........
[cpp]
#include
int a,b;
void run()
{
int c,k;
c=a+b;
printf("%d ",c);//这个程序是由正常的和来反求不进位的和(或者直接按位相加也是可以的 )。
k=1;
while(k<=a||k<=b)
{
if(a/k%10+b/k%10>9)
c-=k*10;//在某一位上的进位被忽略,相当于总和减小了这一位权值的十倍,个位进位被忽略,总和就少了10。
k*=10;
}
printf("%d\n",c);
}
int main()
{
while(scanf("%d%d",&a,&b)!=EOF)
run();
return 0;
}
#include
int a,b;
void run()
{
int c,k;
c=a+b;
printf("%d ",c);//这个程序是由正常的和来反求不进位的和(或者直接按位相加也是可以的 )。
k=1;
while(k<=a||k<=b)
{
if(a/k%10+b/k%10>9)
c-=k*10;//在某一位上的进位被忽略,相当于总和减小了这一位权值的十倍,个位进位被忽略,总和就少了10。
k*=10;
}
printf("%d\n",c);
}
int main()
{
while(scanf("%d%d",&a,&b)!=EOF)
run();
return 0;
}