注册 登录
编程论坛 C语言论坛

写的代码超时了,不知道哪儿能改...

hanserisgood 发布于 2022-11-19 17:16, 995 次点击
题目在这儿:https://www.

#include<stdio.h>
int main(void)
{
    int n;
    scanf("%d",&n);
    int light[20000]={0};//所有的灯刚开始都是关着的。
    int i;
    int j;
    double a;
    int t;
    int change;//标记
    for(i=0;i<n;i++)
    {
        scanf("%lf%d",&a,&t);
        for(j=1;j<=t;j++)
        {
            change=(int)(a*j);
            if(light[change]==0)
            {
                light[change]=1;
            }
            else
            {
                light[change]=0;
            }
        }
    }
    for(i=0;1;i++)
    {
        if(light[i]==1)
        {
            printf("%d",i);
            break;
        }
    }
    return 0;
}
4 回复
#2
forever742022-11-19 19:51
题目里说需要算2000000盏灯,而楼主你处理了20000盏。
你说有没有一种可能,因为等着另外1980000盏总也等不到所以就超时了呢?
#3
rjsp2022-11-19 20:35
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    unsigned result = 0;
    while( n-- )
    {
        double a;
        unsigned t;
        scanf( "%lf%u", &a, &t );

        for( unsigned i=0; i!=t; ++i )
            result ^= (unsigned)( a*(i+1) );
    }

    printf( "%u\n", result );
}
#4
hanserisgood2022-11-20 10:14
回复 2楼 forever74
确实是这样,改了之后就好了...感谢
#5
hanserisgood2022-11-20 10:14
回复 2楼 forever74
感谢感谢
1