题目描述
求方程 (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;
}
作者:qq_39322743
来源:CSDN
原文:https://blog.csdn.net/qq_39322743/article/details/78720133
版权声明:本文为博主原创文章,转载请附上博文链接!