http://noi.openjudge.cn/ch0302/1748/
#include <stdlib.h>
#include<iostream>
#include<cmath>
#include<string>
using namespace std;
void returnint(int,int);
int main() {
int d1 = 1, d2 = 1, mn = 0,source[2][100],k=0;
while (1)
{
cin >> source[0][k];
cin >> source[1][k];
if (source[0][k] == 0 || &source[1][k]==0)break;
k++;
}
for (int t=0;t<k;t++)
returnint(source[0][t], source[1][t]);
//system("PAUSE");
return 0;
}
void returnint(int d1, int d2)
{
if (d1 == 0 || d2 == 0)
return;
int monkey[310] = { 0 },gap=0;
for (int i = 0; i < d1; i++)
monkey[i + 1] = 1;
if (d1 < d2)
d2 %= d1;
//确定剩余的猴子→确定退出的猴子
int i1 = 1, dnum = 0;//dnum:退出个数
while (1)
{
if (monkey[i1] == 1)
{
gap++;
if (gap == d2)
{
monkey[i1] = 0;
dnum++;
gap = 0;
}
}
if (dnum == (d1))
{
cout << i1 << endl;
break;
}
i1++;
if (i1 > d1)
i1 %= d1;
}
}
如果在本地可以,而oj这些上runtime error,这个并没有动态,就是访问出界了吧,数组开小了?oj上测试数据多……