#include<iostream>
using namespace std;
int main(){
int k=0,m,n,maxn=0;
int b[111];
b[0]=-1;
bool f=0;
cin>>m>>n;
for(int i=1;i<=n;i++){
k=k+i;
k%=m;
if(k==0)k=m;
b[k]++;
}
for(int i=1;i<=n;i++){
if(b[maxn]<b[i])maxn=i;
if(b[i]==0){
f=1;
cout<<i<<" ";
}
}
if(f==0)cout<<maxn;
return 0;
}
哪里错了
周俊彦在2020-11-14 16:45:11追加了内容
#include<iostream>
using namespace std;
int k=0,m,n,maxn=0;
int b[1010];
bool f=0;
void work1(){
for(int i=1;i<=n;i++){
if(b[i]==0){
cout<<i<<" ";
}
}
}
int main(){
b[0]=-1;
cin>>m>>n;
for(int i=1;i<=n;i++){
k=k+i;
k%=m;
if(k==0)k=m;
b[k]++;
}
//如果有灯泡没亮,那么输出所有没有亮过的灯泡编号;如果所有灯泡都亮过,那么输出亮的次数最多的灯泡编号。
for(int i=1;i<=1000;i++){
if(b[i]==0){
work1();
return 0;
}
}
for(int i=1;i<=1000;i++){
if(b[maxn]<b[i]){
maxn=i;
}
}
cout<<maxn;
return 0;
}
你用个桶他不香吗?
例如:
~~~
for(int i=1;i<=n;i++)
{
t=(t+x)%m;
x++;
if(t==0)
{
a[m]++;
continue;
}
a[t]++;
}
~~~
陈宇飞在2020-11-14 18:58:08追加了内容
t的取值应该是:
t=(t+x)%m;
x++;
if(t==0)
{
a[m]++;
continue;
}
a[t]++;