题目来源和说明
题目来源于王道考研,题目链接如下:
https://www.nowcoder.com/questionTerminal/8c3c5dae2c4a4266ba04f993a18e286b
题目描述
读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。
样例
输入
1 2 1
11 21 1
108 8 2
36 64 3
0 0 1
输出
3
-1
-1
100
简要分析
这个题目我们依次取出倒数第K个数字即可,如果不相等,则直接退出不再进行判断,返回a+b就行
C++ 代码
#include<iostream>
using namespace std;
int main() {
int a,b,k;
while(scanf("%d%d%d",&a,&b,&k)!=EOF&&a!=0&&b!=0) {
int ret=-1;
int tempa=a;
int tempb=b;
while(k--) {
if(a%10!=b%10) {
ret=tempa+tempb;
break;
}
a/=10;b/=10;
}
printf("%d\n",ret);
}
return 0;
}
同类题目
- 守形数
https://www.nowcoder.com/questionTerminal/99e403f8342b4d0e82f1c1395ba62d7b
C++代码
#include<iostream>
using namespace std;
int main() {
int a;
while(scanf("%d",&a)!=EOF) {
int b=a*a;
while(a) {
if(a%10!=b%10) {
printf("No!\n");
break;
}
a/=10;b/=10;
}
if(a==0) printf("Yes!\n");
}
return 0;
}
- 特殊乘法
https://www.nowcoder.com/questionTerminal/a5edebf0622045468436c74c3a34240f?toCommentId=12462195
C++代码
#include<iostream>
int buf1[15],buf2[20];
int size1=0,size2=0;
using namespace std;
int main() {
int a,b;
while(scanf("%d%d",&a,&b)!=EOF) {
size1=0;size2=0;
int ans=0;
while(a!=0) {
buf1[size1++]=a%10;
a=a/10;
}
while(b!=0) {
buf2[size2++]=b%10;
b=b/10;
}
for(int i=0;i<size1;i++) {
for(int j=0;j<size2;j++) {
ans+=buf1[i]*buf2[j];
}
}
printf("%d\n",ans);
}
}
- 反序数
https://www.nowcoder.com/questionTerminal/e0d06e79efa44785be5b2ec6e66ba898?toCommentId=12462344
C++代码
#include<iostream>
using namespace std;
int main() {
for(int i=1000;i<=1111;i++) {
int a=i;
int b=0;
while(a) {
b=b*10+a%10;
a/=10;
}
if(b==i*9) {
printf("%d\n",i);
}
}
return 0;
}
- 对称平方数
https://www.nowcoder.com/questionTerminal/1b79865e2f534db0adba84dca10d6bae
C++代码
#include<iostream>
using namespace std;
bool isret(int a) {
int temp[20];
int idx=0;
do{
temp[idx++]=a%10;
a=a/10;
}while(a!=0);
int i=0;
int j=idx-1;
for(;i<=j;i++,j--) {
if(temp[i]!=temp[j]) {
return false;
}
}
return true;
}
int main() {
for(int i=1;i<256;i++) {
if(isret(i*i)) {
printf("%d\n",i);
}
}
return 0;
}
- Digital Root
https://www.nowcoder.com/questionTerminal/cef727d0af33479c9fb4a9c120702414
C++代码
#include<iostream>
using namespace std;
int digitRoot(int a) {
int res=0;
do{
res+=a%10;
a/=10;
}while(a!=0);
if(res>9) return digitRoot(res);
else return res;
}
int main() {
int a;
while(scanf("%d",&a)!=EOF) {
printf("%d\n",digitRoot(a));
}
return 0;
}