XTU1189 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
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;
}


你可能感兴趣的:(XTU程序设计实践)