hahahahaqg 2022-12-10 19:04 采纳率: 12.5%
浏览 36

洛谷入门题P1161 开灯

问题遇到的现象和发生背景

洛谷P1161 开灯

遇到的现象和发生背景,请写出第一个错误信息

n输入2762时输出数据本应是1228,但是运行出来的是801,但是n为较小数时输出结果正确

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<stdio.h>
int lamp[2000001]={0};
int main()
{
    //int lamp[2000001]={0};
    int n;
    scanf("%d",&n);
    
    
    for(int i=0;i<n;i++)
    {
        float a;
        int t;
        scanf("%f%d",&a,&t);
        for(int j=1;j<=t;j++)
        {
            int m;
            m=a*j;
            if(lamp[m]==0)lamp[m]=1;
            else lamp[m]=0;
        }
    }
    int x;
    for(int i=1;;i++)
    {
        if(lamp[i]==1)
        {
            x=i;
            break;
        }
    }
    printf("%d",x);
} 

运行结果及详细报错内容

小一点的测试集可以过,但一旦n特别大,输出的结果就不对

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

是通过循环进行1 0判断来实现按灯的开关的,实在是不知道代码哪里还有问题,求捞QAQ

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

想知道为什么n大一点的时候输出数据不对

  • 写回答

1条回答 默认 最新

  • honestman_ 2022-12-10 21:53
    关注
    
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        int n;
        double a;
        int  t;
        int ans = 0;
        cin >> n;
        for (int i = 0; i < n; i++)
        {    
            cin >> a >> t;
            for (int j = 1; j <= t; j++)
                ans ^= int(a * j);    //异或
        }
        cout << ans;
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月10日