UVa 11313

来源:互联网 发布:hm在淘宝有旗舰店吗 编辑:程序博客网 时间:2024/06/03 18:58

题目:初始选拔比赛,有n个厨师,每场比赛出席m人,胜利者和余下的人进行下一场比赛;

            问最后决赛时的人数是否正好是m个人,一共办多少组比赛。

分析:数论。推公式即可。

            设共有k+1场比赛,则每场比赛后剩下的人数为f(i):

             f(1)= n - m + 1;

             f(2)= n - 2m + 2;

             ...

             f(k) = n - km + k = m;

             f(k+1) = 1;

             由f(k)得到公式 k = (n-m)/ (m-1),判断余数是否为零即可。

说明:写成读数据到文件结束就WA了。

#include <stdio.h>#include <stdlib.h>int main(){int t, n, m;scanf("%d",&t);while (t --) {scanf("%d%d",&n,&m);if ((n-m)%(m-1) == 0) {printf("%d\n",(n-m)/(m-1)+1);}else {puts("cannot do this");}}return 0;} 


原创粉丝点击