XTU1189 ROOT

来源:互联网 发布:数据导入导出怎么做 编辑:程序博客网 时间:2024/05/16 08:21

题目描述

求方程 (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;}


原创粉丝点击