這樣還是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";
}
}
}