码迷,mamicode.com
首页 > 其他好文 > 详细

分火腿

时间:2016-10-22 11:33:24      阅读:502      评论:0      收藏:0      [点我收藏+]

标签:小朋友   范围   read   生日   #include   stdin   连接   main   std   

分火腿

(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。

/*
可以把n根火腿肠连起来,那么最多需要切m-1刀,如果下刀处恰好是火腿的连接处,那么就少切一刀。
最少需要切0刀(n是m的倍数)
所以,ans=max(m-gcd(n,m),0);
*/
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,T;
int read()
{
    int x=0;char ch=getchar();
    while(ch<0||ch>9){ch=getchar();}
    while(ch>=0&&ch<=9){x=x*10+ch-0;ch=getchar();}
    return x;
}
int gcd(int x,int y){return y==0?x:gcd(y,x%y);}
int main()
{
    freopen("hdogs.in","r",stdin);
    freopen("hdogs.out","w",stdout);
    T=read();
    while(T--)
    {
        n=read();m=read();
        printf("%d\n",max(m-gcd(n,m),0));
    }
    return 0;
}

 

分火腿

标签:小朋友   范围   read   生日   #include   stdin   连接   main   std   

原文地址:http://www.cnblogs.com/EvilEC/p/5986726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!