问题标题: 酷町堂:3888

0
0
周俊彦
周俊彦
修练者
修练者

#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;
}


1
陈宇飞
陈宇飞
高级守护
高级守护

你用个桶他不香吗?

例如:

~~~

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]++;

0
0
0
0
我要回答