宁波市工程学院[1349] 刺儿扎痛虎屁股 根据公式放刺,求1-n哪个洞放的刺最多
宁波工程学院[1349] 刺儿扎痛虎屁股根据公式放刺,求1-n哪个洞放的刺最多http://ac.nbutoj.com/Problem/vie
宁波工程学院[1349] 刺儿扎痛虎屁股 根据公式放刺,求1-n哪个洞放的刺最多
http://ac.nbutoj.com/Problem/view.xhtml?id=1349
[1349] 刺儿扎痛虎屁股时间限制: 1000 ms 内存限制: 65535 K 问题描述 兔子挖了很多洞, 老虎嫌弃一个一个找过去太麻烦了, 最终老虎决定坐平每一个洞.
兔子一共挖了N个洞并将洞从1到N编号,
现在兔子有K根刺, 兔子先在第一个洞放一根刺.
然后兔子往后数(K0 + 2) * N0个, N0为当前编号, K0为手上还剩余的刺的数目
如果数到最后一个的话, 兔子就从头再开始数.
当兔子放完所有的刺的时候, 在有刺的洞里面最多的有几根. 输入 本题有多组输入, 对于每组数据.
输入一行, 输入 N, K. (0 < N < 50000, 0 < K < 50000), N表示洞的个数, K表示兔子起初手上的刺的个数.
输出 对于每组输入, 输出洞中刺最多的数目.
样例输入 2 110 210 5
样例输出 112
提示 无
来源 monkeyde17
思路:
step pos#include<stdio.h>#include<string.h>int a[55000];int main(){int pos,n,k,mmax,rem,step;//long long pp;while(scanf("%d %d",&n,&k)!=EOF){ pos=1;mmax=1; memset(a,0,sizeof(a)); a[1]=1; k=k-1; while(k>0) { pos=((__int64)(pos+pos*(k+2)))%n; if(pos==0) { break; } a[pos]++; if(a[pos]>mmax) mmax=a[pos]; k--; } a[n]+=k; if(a[n]>mmax) mmax=a[n]; printf("%d\n",mmax);}return 0;}