国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > Codeforces Beta Round #75 (Div. 2)---A. Chips

Codeforces Beta Round #75 (Div. 2)---A. Chips

来源:程序员人生   发布时间:2014-11-19 08:11:52 阅读次数:1975次

Chips
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

There are n walruses sitting in a circle. All of them are numbered in the clockwise order: the walrus number 2 sits to the left of the walrus number 1, the walrus number 3 sits to the left of the walrus number 2, ..., the walrus number 1 sits to the left of the walrus number n.

The presenter has m chips. The presenter stands in the middle of the circle and starts giving the chips to the walruses starting from walrus number 1 and moving clockwise. The walrus number i gets i chips. If the presenter can't give the current walrus the required number of chips, then the presenter takes the remaining chips and the process ends. Determine by the given n and m how many chips the presenter will get in the end.

Input

The first line contains two integers n and m (1?≤?n?≤?501?≤?m?≤?104) ― the number of walruses and the number of chips correspondingly.

Output

Print the number of chips the presenter ended up with.

Sample test(s)
input
4 11
output
0
input
17 107
output
2
input
3 8
output
1
Note

In the first sample the presenter gives one chip to the walrus number 1, two chips to the walrus number 2, three chips to the walrus number 3, four chips to the walrus number 4, then again one chip to the walrus number 1. After that the presenter runs out of chips. He can't give anything to the walrus number 2 and the process finishes.

In the third sample the presenter gives one chip to the walrus number 1, two chips to the walrus number 2, three chips to the walrus number 3, then again one chip to the walrus number 1. The presenter has one chip left and he can't give two chips to the walrus number2, that's why the presenter takes the last chip.







解题思路:有1~n顺次循环相连,即1 -> 2 -> ... -> n⑴ -> n -> 1.现有数m,从顺次从1的位置开始,如果m >= 1,则m -= 1.顺次i循环移动,直到m < i时,输出m便可。直接判断1下当i是n的倍数时,i = n;否则i = i%n便可。




AC代码:

#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; #define INF 0x7fffffff int main() { #ifdef sxk freopen("in.txt","r",stdin); #endif int n, m; while(scanf("%d%d", &n, &m)!=EOF) { for(int i=1; ; i++){ if(i%n != 0) i %= n; else i = n; if(m < i){ printf("%d ", m); break; } m -= i; } } return 0; }

 

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生