#15337: 見笑了! 高手可否點化點化


hshua (hshua)

學校 : 新北市立林口高級中學
編號 : 52506
來源 : [125.228.147.181]
最後登入時間 :
2024-11-19 08:27:35
c226. 公關的大雞腿 | From: [220.133.124.237] | 發表日期 : 2018-09-28 22:20

這樣還是TLE !!!
見笑了! 高手可否點化點化

#include <iostream>
#include<string.h>
using namespace std;
typedef long long ll;
int cnt;
ll n,m,a,sum;
//--------------------------------------------
void Check(){
    if(m<=3) return;

    while(m>3 && a>3){
        if(sum==n) {
            cnt++;  
            m=(m+1)/2;
            a=m, sum=m;
        }
        else if(sum<n) { a--; sum+=a; }
        else if(sum>n) {
            m=(m+1)/2;
            a=m, sum=m;
        }
    }
}
//============================================
int main(){
    while(cin>>n){
        if(n==0) break;

        if(n%2==0 || n==1 || n==2) cout<<"0\n"; //偶數,無解
        else if(n==3) cout<<"1\n";
        else{//奇數
             cnt=1;
             m=(n+1)/2;
             a=m, sum=m;
             if(m>3) Check();
             
             cout<<cnt<<"\n";
        }
    }
}

 

 

 

 
ZeroJudge Forum