洛谷入门题P1161 开灯

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

洛谷P1161 开灯

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

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

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include
int lamp[2000001]={0};
int main()
{
    //int lamp[2000001]={0};
    int n;
    scanf("%d",&n);
    
    
    for(int i=0;ifloat 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大一点的时候输出数据不对


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