余数相同问题
已知三个正整数 a,b,c。
现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同。
请问满足上述条件的x的最小值是多少?
数据保证x有解。
输入
一行,三个不大于1000000的正整数a,b,c,两个整数之间用一个空格隔开。
输出
一个整数,即满足条件的x的最小值。
样例输入
300 262 205
样例输出
19
分析问题:
很明显得知要我们去找一个除数,这三个数分别除这个数,因而我们会想到循环来处理从2 开始,那么循环条件是啥来?下面是我最出的解题方法,个人认为很对,但最终答案确实错误的:
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int x1=0,x2=0,x3=0,t=0;
int a[]=new int[3];
for(int i=0;i<3;i++)
{
a[i]=in.nextInt();
}
for(int j=2;;j++)
{
x1=a[0]%j;
x2=a[1]%j;
x3=a[2]%j;
System.out.println("affzvfvv");
if(x1==x2&&x2==x3&&x1==x3)break;
{
System.out.println("affzvfvv");
t=x1;}}
System.out.println(t);
}
}
hasnext()用法:
Scanner sc = new Scanner(System.in);
此句 表示从控制台获取数据,
sc.hasNext() 表示你是否有输入数据,
while语句块 表示当你输入数据的时候,就执行输出sc.next()(输出内容)
所以只要你输入数据了,它就可以执行,
所以后台只是开了一块内存,一直未关闭,不算死循环
2、hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。
你可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
例:以输入"0",结束输出
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("0")) {
System.out.println(sc.next());
}
最新解题方法:
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int x1=0,x2=0,x3=0,t=0;
int a[]=new int[3];
for(int i=0;i<3;i++)
{
a[i]=in.nextInt();
}
for(int j=2;;j++)
{
x1=a[0]%j;
x2=a[1]%j;
x3=a[2]%j;
if(x1==x2&&x2==x3&&x1==x3)
{
t=j;
System.out.println(t);
break;}}
}
}
遮掩喝酒吧问题解决了。