#2669: 一直TLE!!


mgigigo (Michael)

學校 : 國立中央大學
編號 : 5411
來源 : [1.163.73.210]
最後登入時間 :
2017-03-03 21:14:17
d525. 加法运算 -- | From: [140.115.203.85] | 發表日期 : 2009-11-13 06:01

#pragma warning(disable : 4996)
#include <stdio.h>
#include <stdlib.h>
#include <iostream>  

using namespace std;  

int main()
{    
    long long n=0;
    scanf("%ld",&n);
    while(n>0)
    {
        long long sum=0;
        int x;
        scanf("%d",&x);
        while(x>0)
        {
            if(sum<=n)
                sum+=x;
            scanf("%d",&x);
        }
//            printf("%ld",sum&1);
        if(sum==n)
        {
            if(sum&1==1)
                printf("2\n");
            else
                printf("1\n");
        }
        else
            printf("0\n");
        scanf("%ld",&n);
    }
    system("PAUSE");
              
===================================
 
找到快(ㄎㄧ)校!!
 
還有哪裡是可加速的!!
 
幫我吧
 
我快瘋了!!
 
 
 
    

 
#2691: Re:一直TLE!!


m80126colin (許胖)

學校 : 新北市立板橋高級中學
編號 : 2331
來源 : [35.203.227.81]
最後登入時間 :
2020-12-25 10:47:06
d525. 加法运算 -- | From: [220.133.50.147] | 發表日期 : 2009-11-14 00:37

#pragma warning(disable : 4996)
#include
#include
#include  

using namespace std;  

int main()
{    
    long long n=0;
    scanf("%ld",&n);
    while(n>0)
    {
        long long sum=0;
        int x;
        scanf("%d",&x);
        while(x>0)
        {
            if(sum<=n)
                sum+=x;
            scanf("%d",&x);
        }
//            printf("%ld",sum&1);
        if(sum==n)
        {
            if(sum&1==1)
                printf("2\n");
            else
                printf("1\n");
        }
        else
            printf("0\n");
        scanf("%ld",&n);
    }
    system("PAUSE");
              
===================================
找到快(ㄎㄧ)校!!
還有哪裡是可加速的!!
幫我吧
我快瘋了!!
    



 

可以用getchar()和putchar()再加速唷

 
#2835: Re:一直TLE!!


xatier (一串電研的阿飄先生)

學校 : 國立臺中第一高級中學
編號 : 4282
來源 : [140.113.17.175]
最後登入時間 :
2014-12-09 21:57:44
d525. 加法运算 -- | From: [210.60.107.233] | 發表日期 : 2009-11-24 17:15

#pragma warning(disable : 4996)
#include
#include
#include  

using namespace std;  

int main()
{    
    long long n=0;
    scanf("%ld",&n);
    while(n>0)
    {
        long long sum=0;
        int x;
        scanf("%d",&x);
        while(x>0)
        {
            if(sum<=n)
                sum+=x;
            scanf("%d",&x);
        }
//            printf("%ld",sum&1);
        if(sum==n)
        {
            if(sum&1==1)
                printf("2\n");
            else
                printf("1\n");
        }
        else
            printf("0\n");
        scanf("%ld",&n);
    }
    system("PAUSE");
              
===================================
找到快(ㄎㄧ)校!!
還有哪裡是可加速的!!
幫我吧
我快瘋了!!
    



 

可以用getchar()和putchar()再加速唷

 

 

好不容易修掉所有的WA,但是還有三筆TLE,到底是為什麼呢?

 

//=======================================

#include <stdio.h>
#include <string.h>
#define MAX 1000

char str[MAX];                  //輸入的字串
int ans[MAX], big[MAX];         //答案  要加的大數
char check[MAX];
int len;

void init_big () {
    int i;
    for (i = 0; i < MAX; i++) {
        big[i] = 0;
    }
}

void init_ans () {
    int i;
    for (i = 0; i < MAX; i++) {
        ans[i] = 0;
    }
}

void init () {                  //這只是我避免麻煩寫的
    init_big();                 //當初覺得要初始化好多次
    init_ans();                 //所以就這樣寫 XDD
}

void plus () {                  //大數加法
    int i, j;
    j = 0;
    for (i = strlen(str) - 1; i >= 0; i--) {        //從char 轉 int
        big[j] = (int)(str[i] - '0');
        j++;                    //紀錄big[]的長度
    }

    for (i = 0; i < j; i++) {
        ans[i] += big[i];
        ans[i+1] += (ans[i] / 10);                  //避免麻煩,強迫進位
        ans[i] %= 10;
    }
}

void print () {        //檢查用,順便紀錄ans[] 長度
    int i;
    for (i = (MAX - 1); i >= 0; i--) {              //先找到最前面的非 0 位
            if (ans[i] != 0) {
            break;
        }
    }

    len = i;        //紀錄長度

/*   
    for (; i >= 0; i--) {
        printf("%d", ans[i]);
    }
    puts("");
*/
}

int check_end () {
    int i, cor;
    if (ans[0] % 2 == 0) {
        cor = 1;
    }
    else {
        cor = 2;
    }/*
    for (i = 0; i < len; i++) {
        if ((int)(check[strlen(check) - i - 1] - '0') != ans[i]) {
            return 0;
        }
    }*/
    if ((int)(check[strlen(check) - 1] - '0') != ans[0]) {
        return 0;
    }
    return cor;
}

int main () {
    init();
    while (gets(check) != NULL) {
        if (!strcmp(check, "0")) {
                print();
                break;
        }
        while (1) {
            gets(str);
            if (!strcmp(str, "0")) {
                print();
                break;
            }
            plus();
            init_big();
        }
        printf("%d\n", check_end());
        init();
    }
    return 0;
}

 
#2836: Re:一直TLE!!


pscd (PSCD)

學校 : 國立臺中第一高級中學
編號 : 7504
來源 : [42.72.208.144]
最後登入時間 :
2018-08-04 17:40:33
d525. 加法运算 -- | From: [59.114.249.97] | 發表日期 : 2009-11-24 20:08

<引文恕刪>

這題其實根本不是大數

2^1024 是唬你的,阿飄!

//===========以下==code防雷 ==================

 

 

#include <stdio.h>
#include <string.h>

char check[500];
char str[500];
int carry;

int main () {
    while (1) {
        gets(check);
        if (!strcmp(check, "0")) {
            break;
        }
        while (1) {
            gets(str);
            if (!strcmp(str, "0")) {
                break;
            }
            carry += (int)(str[strlen(str)-1] - '0');
            carry %= 10;
        }
        if (carry == (int)(check[strlen(check)-1] - '0')) {
            if (carry % 2 == 0) {
                puts("1");
            }
            else {
                puts("2");
            }
        }
        else {
            puts("0");
        }
        carry = 0;
    }
    return 0;
}
 

 
#3702: Re:一直TLE!!


pcsh710720 (∫tanxdx=-㏑|cosx|+C)

學校 : 新北市立板橋高級中學
編號 : 2491
來源 : [140.120.19.1]
最後登入時間 :
2015-09-30 13:22:17
d525. 加法运算 -- | From: [119.77.206.25] | 發表日期 : 2010-05-03 22:00

#include<iostream>
#include<string>
using namespace std;
int main(){
 string m;
 long long a,c;
 while(cin>>m,m!="0"){
  c=0;
  while(scanf("%lld",&a),a){
   c+=a;
  }
  if((m[m.size()-1]-'0')!=c%10){
   printf("0\n");
   continue;;
  }
  printf("%d\n",(((m[m.size()-1]-'0')%2)+1));
 }
}
有2行TLE
能幫幫忙嗎?
 
ZeroJudge Forum