CSUSTOJ 4004-你真的会吃零食吗?(打表)

题目链接: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 2n9

Output
一行一个整数表示答案。

Sample Input 1
2
Sample Output 1
7

emmm,实际上我们可以注意到数据发范围非常小,所以可以直接暴力跑一波,如果跑的时间比较久,我们就直接将其打表打出来就好了。我们直接从7开始枚举每一个数是否合法就行了。当然比赛的时候ysl巨巨直接一个公式就过去了QAQ。。。

以下是AC代码:

#include 
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;
}

你可能感兴趣的:(打表&规律,打表)