1. 程式人生 > >XTU-oj-迴圈2-root

XTU-oj-迴圈2-root

題目描述

求方程 (x+a)/(x+b) = c的非負整數根,其中a,b,c都是非負整數 輸入:第一行是一個整數K,表示樣例的個數(K≤30000)。以後的K行每行為以一個樣例,包含三個非負整數a,b,c (a,b,c ≤ 10^9)。 輸出: 每行輸出一個樣例的結果。如果方程沒有根,輸出“None”,否則輸出根的值,如果存在多個根,輸出最小的那個。 Sample Input 3 1 1 1

1 1 2

3 1 2 Sample Output 0 None

1

解題思路

考慮全a,b,c的一些特殊取值即可。

AC程式碼:

#include<stdio.h>
int main(){
	int k;
	scanf("%d",&k);
	int a,b,c;
	int x,y;
	while(k--){
		scanf("%d%d%d",&a,&b,&c);
		if(b!=0&&c!=1) {
		x=(a-b*c)/(c-1);
		y=(a-b*c)%(c-1);
		if(x>=0&&y==0) printf("%d\n",x);
		else printf("None\n");
		} 
	    else if(c==1){
			if(a==b&&b!=0) printf("0\n");
			else if(a==b&&b==0) printf("1\n");
			else printf("None\n");
		}
		else if(a==0) printf("None\n");
		else 
        {  
            x=a/(c-1);
            y=a%(c-1);
            if(x>=0&&y==0)
                printf("%d\n",x);
                else printf("None\n");
        }		
} 
return 0;
}