杭電oj之2092(整數解)&2096(小明A+B) -----java語言版

一、2092(整數解)

Problem Description

有二個整數,它們加起來等於某個整數,乘起來又等於另一個整數,它們到底是真還是假,也就是這種整數到底存不存在,實在有點吃不準,你能快速回答嗎?看來只能通過編程。
例如:
x + y = 9,x * y = 15 ? 找不到這樣的整數x和y
1+4=5,1*4=4,所以,加起來等於5,乘起來等於4的二個整數爲1和4
7+(-8)=-1,7*(-8)=-56,所以,加起來等於-1,乘起來等於-56的二個整數爲7和-8

Input

輸入數據爲成對出現的整數n,m(-10000<n,m<10000),它們分別表示整數的和與積,如果兩者都爲0,則輸入結束。

Output

只需要對於每個n和m,輸出“Yes”或者“No”,明確有還是沒有這種整數就行了。

Sample Input

9 15 5 4 1 -56 0 0

Sample Output

No Yes Yes

本題的思路:首先要分情況,我分了4種情況,可以根據代碼看出有4個if條件,每個條件下的代碼可以自己寫,在第一個if條件下判斷二次方程的根是否爲整數,也可以根據for循環依次遍歷看看能不能找到這樣的整數,最主要的是要分情況。

代碼如下:

import java.util.Scanner;
import java.math.*;
public class Main{
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		while(in.hasNext()){
			int sum=in.nextInt();
			int mult=in.nextInt();
			boolean t=false;
			if(sum!=0&&mult!=0){
				double a=(-sum+Math.sqrt(sum*sum-4*mult))/(-2);
				double b=(-sum-Math.sqrt(sum*sum-4*mult))/(-2);
				if(a==Math.floor(a)&&b==Math.floor(b))
					System.out.println("Yes");
				else
					System.out.println("No");	
			}
			if(sum==0&&mult!=0){
				for(int i=-10000;i<=10000;i++){
					if(-i*i==mult){
						t=true;
						break;
					}
				}
				if(t)
					System.out.println("Yes");
				else
					System.out.println("No");
			}
			if(mult==0&&sum!=0){
				if(sum<=10000&&sum>=-10000)
					System.out.println("Yes");
				else
					System.out.println("No"); 
			}
			if(sum==0&&mult==0){
				break;
			}
		}
	}
}

二、2096(小明A+B)

Problem Description

小明今年3歲了, 現在他已經能夠認識100以內的非負整數, 並且能夠進行100以內的非負整數的加法計算.
對於大於等於100的整數, 小明僅保留該數的最後兩位進行計算, 如果計算結果大於等於100, 那麼小明也僅保留計算結果的最後兩位.
例如, 對於小明來說:
1) 1234和34是相等的
2) 35+80=15

給定非負整數A和B, 你的任務是代表小明計算出A+B的值.

Input

輸入數據的第一行爲一個正整數T, 表示測試數據的組數. 然後是T組測試數據. 每組測試數據包含兩個非負整數A和B(A和B均在int型可表示的範圍內).

Output

對於每組測試數據, 輸出小明A+B的結果.

Sample Input

2 35 80 15 1152

Sample Output

15 67

本題目比較簡單,直接上代碼,主要在輸出格式那裏稍微調整一下:

import java.util.Scanner;
import java.math.*;
public class bluebridge1104{
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		while(in.hasNext()){
			int count=in.nextInt();
			for(int i=0;i<count;i++){
				double a=in.nextDouble();
				double b=in.nextInt();
				double sum=0;
				if(a>=100) a=a%100;
				if(b>=100) b=b%100;
				sum=a+b;
				if(sum>=100) sum=sum%100;
				System.out.printf("%.0f\r\n",sum);
			}
			
		}
	}
}

 

                                                                                  感謝看完,希望給個贊吧

發佈了15 篇原創文章 · 獲贊 15 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章