题目1015:还是A+B

题目1015:还是A+B

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:9411

解决:5643

题目描述:
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
输入:

测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。

输出:

对每个测试用例输出1行,即A+B的值或者是-1。

样例输入:
1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
样例输出:
3
-1
-1
100
来源:
2006年浙江大学计算机及软件工程研究生机试真题
答疑:
解题遇到问题?分享解题心得?讨论本题请访问: http://t.jobdu.com/thread-7739-1-1.html

思路:感觉这题没有什么难的,就是把要比较的二个数当做字符串输入,然后从后到前比较k个位数,如果有相等的直接输出“-1”;否则输出a+b的值。
代码如下:

#include<iostream>
#include <cstring> 
#include <fstream>
using namespace std;
int main()
{
	ifstream in;
	in.open("1.txt");
	string stra,strb;
	int k;
	while(in>>stra>>strb>>k && stra[0]!='0' && strb[0]!='0')
	{
		int a=0;
		int b=0;
		int flag=0;
		int counta=stra.length()-1;
		int countb=strb.length()-1;
		for(int i=0;i<=counta;i++)
			a=a*10+stra[i]-'0';
		for(int i=0;i<=countb;i++)
			b=b*10+strb[i]-'0';
		while(k-- && counta>=0 && countb>=0)//比较k位内有无相等的位数 
		{
			if(stra[counta]==strb[countb])
			{
				cout<<"-1"<<endl;
				flag=1;
				break;
			}
			--counta;
			--countb;
		}
		if(flag==0)							//没有则返回二数相加的结果 
		cout<<a+b<<endl;
	}
	return 0;
} 

(2)找了个用整数数表示方式,逻辑还好。

#include <iostream>  
#include <fstream>  
#include <string>  
  
using namespace std;  
  
int main()  
{  
    int a, b, k;  
  
#ifndef ONLINE_JUDGE  
    ifstream cin("d:\\OJ\\uva_in.txt");  
#endif // ONLINE_JUDGE  
  
    while (cin >> a >> b >> k) {  
        if (a == 0 && b == 0)  
            break;  
  
        bool flag = true;  
        int tmpa = a, tmpb = b;  
        while (k--) {  
            if (tmpa % 10 != tmpb % 10) {  
                flag = false;  
                break;  
            }  
            tmpa /= 10;  
            tmpb /= 10;  
        }  
        if (flag) {  
            cout << "-1" << endl;  
        } else {  
            cout << a + b << endl;  
        }  
    }  
  
    return 0;  
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用c语言实现程序输入单词串以 输入单词串以 输入单词串以 ”#”结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 结束,如果是文法正确的句子输出成功信息;否则错误。 例如: 输入 begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end #begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # begin a:=9; x:=2 * 3; b:=a + x end # 输出 success success 输入 x:=a + b * c end # x:=a + b * c end #
最新发布
05-26

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值