16.1116 NOIP 考前模拟(信心题)
分火腿
(hdogs.pas/.c/.cpp)
时间限制:1s;内存限制 64MB
题目描述:
小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿。为了省事,小月言想切最少的刀数,使这n根火腿分成均等的m份。请问最少要切几刀?
输入描述:
第一行一个整数T,表示有T组数据。
接下来T组数据,每组共一行,有两个数字n,m。
输出描述:
每组数据一行,输出最少要切的刀数。
样例输入:
2
2 6
6 2
样例输出:
4
0
数据范围:
100%的数据保证T<=1000;n,m<=2147483647。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int n,m,t; 6 int gcd(int x,int y) 7 { 8 if(y==0) return x; 9 return gcd(y,x%y); 10 } 11 int main() 12 { 13 freopen("hdogs.in","r",stdin); 14 freopen("hdogs.out","w",stdout); 15 scanf("%d",&t); 16 while(t--) 17 { 18 scanf("%d%d",&n,&m); 19 printf("%d\n",m-gcd(n,m)); 20 } 21 fclose(stdin);fclose(stdout); 22 return 0; 23 }