题目链接:http://acm.csust.edu.cn/problem/4004
博客园食用链接:https://www.cnblogs.com/lonely-wind-/p/13488037.html
Description
有n个人分一堆零食,第一个人扔掉一包零食后刚好能均分成n等份,然后他取走了自己的一份;第二个人再第一个人剩下零食的基础上做相同的操作,扔掉一包然后分成n等份;后面的人也这样做。
问最少有多少个零食可以支持n个人这样分配。
Input
输入一行一个整数n.
2 ≤ n ≤ 9 2\le n\le 9 2≤n≤9
Output
一行一个整数表示答案。
Sample Input 1
2
Sample Output 1
7
emmm,实际上我们可以注意到数据发范围非常小,所以可以直接暴力跑一波,如果跑的时间比较久,我们就直接将其打表打出来就好了。我们直接从7开始枚举每一个数是否合法就行了。当然比赛的时候ysl巨巨直接一个公式就过去了QAQ。。。
以下是AC代码:
#include <bits/stdc++.h>
using namespace std;
const int mac=1e5+10;
int ok(int x,int n)
{
int cnt=0;
while ((x-1)%n==0){
x--;
x-=x/n;
cnt++;
}
if (cnt>=n) return 1;
return 0;
}
int main(int argc, char const *argv[])
{
int n;
scanf ("%d",&n);
if (n==9) {printf("387420481\n"); return 0;}
for (int i=7; ;i++){
if (ok(i,n)) {printf("%d\n",i); break;}
}
return 0;
}