OPJ2.1基本算法之枚举&&7217:猴子吃桃
题目传送门
思路:就是一个脑筋急转弯……(话说这一章有好多脑筋急转弯问题……)
- 因为每次分的时候,都会多出来一个,对于N个猴子,如果给这堆桃子补上N-1个,就不用再余出来了
- 在第一条的基础上,假设总的桃子数目X个,第一只猴子分走了总数的N分之一,所以剩下N-1/N的桃子。对于第二只猴子,同理此时桃子总数N-1/N的1/N份被取走,就剩下((N-1)/N)*X的桃子。以此类推。。
- 最终最后一个猴子得到的是((N-1)/N)的N次方乘以X的桃子,因为这个猴子肯定分到整数的桃子,也就是说((N-1)/N)的N次方能取到整数,这是用X约分出来的,得到X即为桃子的数目
减掉加上的N-1个,得到结果 - 对于二要特判一下,我不知道为啥……
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==0)
cout<<"0";
else if(n==1)
cout<<"2";
else if(n==2)
cout<<"7";
else
cout<<(int)pow(n,n)-n+1;
}
水一篇博客 拜拜┏(^0^)┛