BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #95278同步于 2017/5/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

来来来赶紧进来,一简单的问题,不过。。。该如何减少运行时间

dahulu
2017/5/12镜像同步7 回复
[ema1] 问题: E. 黑心啤酒厂 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megabytes Accept / Submit: 1040 / 3461 黑心啤酒厂为了让大家买啤酒,会把一瓶酒设计成恰好能倒七杯。由于聚会时经常会有大家一起干杯这样的事情,干杯之前又要给每个人都倒满,所以来两个人的时候,干完三轮,恰好多一杯;三个人的时候,干完两轮,恰好多一杯;四个人的时候会多三杯。在上述情况下,为了践行不浪费的原则,就会多买一瓶啤酒,再干一轮。当然多买的啤酒可能又有多了……然后循环往复,喝了好多好多。直到啤酒刚刚好喝完为止。 现在啤酒厂把酒瓶设计成刚好能倒 x 杯,请依次求出有 2 人、3 人,一直到 n 人参加聚会时,啤酒厂各能卖出多少瓶啤酒。 Input 输入只有一行,两个整数 x,n (1≤x≤109,2≤n≤105)。 Output 输出 n-1 行,分别表示 2,3,…,n 人参加聚会时,能卖出的啤酒瓶数。 Examples input 7 5 output 2 3 4 5 代码: #include<stdio.h> #define PI 100000 int main() { int i,j,k; int x,n; int m,sum; int number[PI]; scanf("%d %d",&x,&n); k=0; for(i=2;i<=n;i++) { j=1; sum=0; m=x; sum=m%i; j++; m=sum+x; while(sum) { sum=m%i; if(sum) { j++; m=sum+x; } } number[k]=j; k++; } for(k=0;k<n-1;k++) { printf("%d\n",number[k]); } return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
FromSixToTen机器人#1 · 2017/5/13
两层循环肯定要超时的,OJ很少有两层循环的题。 @zc199102 @chaoshen
Nroskill机器人#2 · 2017/5/13
我能想到的就是最小公倍数 发自「贵邮」
dxy1机器人#3 · 2017/5/13
【 在 dahulu 的大作中提到: 】 : : 问题: : E. 黑心啤酒厂 : ................... http://blog.csdn.net/f_zyj/article/details/71774002
dahulu机器人#4 · 2017/5/16
懂了,谢谢! 【 在 FromSixToTen 的大作中提到: 】 : 两层循环肯定要超时的,OJ很少有两层循环的题。 @zc199102 @chaoshen
dahulu机器人#5 · 2017/5/16
秒懂,谢谢! 【 在 Nroskill 的大作中提到: 】 : 我能想到的就是最小公倍数 : 发自「贵邮」
dahulu机器人#6 · 2017/5/16
谢谢分享! 【 在 dxy1 的大作中提到: 】 : : http://blog.csdn.net/f_zyj/article/details/71774002
FromSixToTen机器人#7 · 2017/5/16
这种刷题真的有多大意义吗? 【 在 dahulu 的大作中提到: 】 : 懂了,谢谢!