0
点赞
收藏
分享

微信扫一扫

1189 Root


Description
题目描述
求方程 (x+a)/(x+b) = c的非负整数根,其中a,b,c都是非负整数。

输入
第一行是一个整数K,表示样例的个数(K≤30000)。以后的K行每行为以一个样例,包含三个非负整数a,b,c (a,b,c ≤ 109)。

输出
每行输出一个样例的结果。如果方程没有根,输出“None”,否则输出根的值,如果存在多个根,输出最小的那个。

Sample Input
3
1 1 1
1 1 2
3 1 2

Sample Output
0
None
1

Source

数学问题
注意要求的是非负整数根
解为(a-b*c)/(c-1)

#include <stdio.h>
int main()
{
int k;
scanf("%d",&k);
while(k--)
{
__int64 a,b,c;
scanf("%I64d%I64d%I64d",&a,&b,&c);
if(c==0)
{
if(b==0)
{
printf("None\n");
}
else if(a==0)
{
printf("0\n");
}
else
{
printf("None\n");
}
}
else if(c==1)
{
if(a==b&&a!=0)
{
printf("0\n");
}
else if(a==b&&a==0)
{
printf("1\n");//多解取最小
}
else
{
printf("None\n");
}
}
else if(c>1)
{
if((a-b*c)<0)
{
printf("None\n");
continue;
}
else if((a-b*c)%(c-1)!=0)
{
printf("None\n");
continue;
}
else if(a==0&&b==0)
{
printf("None\n");
continue;
}
printf("%I64d\n",(a-b*c)/(c-1));
}
}
return 0;
}

重在独自思考。多敲
写于2021年8月15日11:53分。


举报

相关推荐

0 条评论