中级天翼
1249 相同的余数
经验值:800 时间限制:1000毫秒
题目描述 Description
有三个正整数x,y,z,找到一个大于1的整数a,将其作为除数分别除x,y,z,得到相同的余数,问满足上述条件的a的最小值是多少?若a不存在,则输出No。
输入描述 Input Description
输入一行,每两个数之间用一个空格隔开。(2=<x,y,z<=100000)
输出描述 Output Description
若有满足要求的a,则输出a的值。若没有,则输出No。
样例输入 Sample Input
【输入样例一】 5 7 9
【输入样例二】 3 4 5
样例输出 Sample Output
【输出样例一】 2
【输出样例二】 No
20分wa代码
#include<iostream>
using namespace std;
int minn;
bool flag=0;
int main(){
int x,y,z;
cin>>x>>y>>z;
minn=min(x,y);
minn=min(minn,z);
for(int i=2;i<=maxn;i++){
if(x%i==y%i==z%i){
cout<<i;
flag=1;
break;
}
}
if(flag==0){
cout<<"No";
}
return 0;
}
丁博扬在2021-05-07 19:48:43追加了内容
错了错了,循环里的maxn改为minn
丁博扬在2021-05-08 20:39:21追加了内容
已自行解决,输出5887415157的采纳
新手启示者
核心:
int x,y,z,a,cnt=0;
cin>>x>>y>>z;
for(int a=2;a<=max(x,max(y,z));a++){
int b=x%a,c=y%a,d=z%a;
if(b==c&&c==d){
cout<<a;
cnt++;
break;
}
}
if(cnt==0){
cout<<"No";
}
新手启示者
定义a,b,c,d,f=0;
cin>>a>>b>>c;
d=min(a,b);
d=min(d,c);
for(int i=2;i<=d+1;i++){
int r=a%i,m=b%i,l=c%i;
if(r==m&&m==l){
cout<<i;
f++;
break;
}
}
if(f==0){
cout<<"No";
}
新手启示者