#27045: NA50%


d10831523@gapps.fg.tp.edu.tw (廖與僑)

學校 : 臺北市立第一女子高級中學
編號 : 107948
來源 : [211.75.180.175]
最後登入時間 :
2022-10-03 21:31:01
g256. 考拉茲猜想 | From: [203.64.52.40] | 發表日期 : 2021-09-09 14:30

救命

扣:

#include<bits/stdc++.h>

using namespace std;

long long int n;

int a[1000001]={0};

int b(long long int);

 

int main(){

ios::sync_with_stdio(0);cin.tie(0);

while(cin>>n){

cout<<b(n)<<endl;

}

}

 

int b(long long int n){

if(n<=1000000){

if(n==1||a[n]>0)return a[n];

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

}

if(n%2==0){

int t=0,m=n;

while(m%2==0)t++,m/=2;

return b(m)+t;

}

else if(n%2==1)return b(n+(n+1)/2)+2;

}

 
#27253: Re:NA50%


linlincaleb@gmail.com (臨末之頌)

學校 : 新北市立板橋高級中學
編號 : 132772
來源 : [111.248.111.135]
最後登入時間 :
2023-04-01 22:41:13
g256. 考拉茲猜想 | From: [111.248.97.244] | 發表日期 : 2021-09-20 23:22

救命

扣:

#include<bits/stdc++.h>

using namespace std;

long long int n;

int a[1000001]={0};

int b(long long int);

 

int main(){

ios::sync_with_stdio(0);cin.tie(0);

while(cin>>n){

cout<<b(n)<<endl;

}

}

 

int b(long long int n){

if(n<=1000000){

if(n==1||a[n]>0)return a[n];

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

}

if(n%2==0){

int t=0,m=n;

while(m%2==0)t++,m/=2;

return b(m)+t;

}

else if(n%2==1)return b(n+(n+1)/2)+2;

}

我覺得會RE是你的這段

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

如果n>1000000會爆

 
#27255: Re:NA50%


linlincaleb@gmail.com (臨末之頌)

學校 : 新北市立板橋高級中學
編號 : 132772
來源 : [111.248.111.135]
最後登入時間 :
2023-04-01 22:41:13
g256. 考拉茲猜想 | From: [111.248.97.244] | 發表日期 : 2021-09-20 23:46

救命

扣:

#include<bits/stdc++.h>

using namespace std;

long long int n;

int a[1000001]={0};

int b(long long int);

 

int main(){

ios::sync_with_stdio(0);cin.tie(0);

while(cin>>n){

cout<<b(n)<<endl;

}

}

 

int b(long long int n){

if(n<=1000000){

if(n==1||a[n]>0)return a[n];

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

}

if(n%2==0){

int t=0,m=n;

while(m%2==0)t++,m/=2;

return b(m)+t;

}

else if(n%2==1)return b(n+(n+1)/2)+2;

}

我覺得會RE是你的這段

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

如果n>1000000會爆

我知道了 你把n設在全域變數

又放在遞迴裡 所以會RE

請忽視我剛剛的回覆 是我思慮不周 抱歉

 
#27256: Re:NA50%


linlincaleb@gmail.com (臨末之頌)

學校 : 新北市立板橋高級中學
編號 : 132772
來源 : [111.248.111.135]
最後登入時間 :
2023-04-01 22:41:13
g256. 考拉茲猜想 | From: [111.248.97.244] | 發表日期 : 2021-09-20 23:54

救命

扣:

#include<bits/stdc++.h>

using namespace std;

long long int n;

int a[1000001]={0};

int b(long long int);

 

int main(){

ios::sync_with_stdio(0);cin.tie(0);

while(cin>>n){

cout<<b(n)<<endl;

}

}

 

int b(long long int n){

if(n<=1000000){

if(n==1||a[n]>0)return a[n];

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

}

if(n%2==0){

int t=0,m=n;

while(m%2==0)t++,m/=2;

return b(m)+t;

}

else if(n%2==1)return b(n+(n+1)/2)+2;

}

我覺得會RE是你的這段

else if(n%2==1){

a[n]=b((3*n+1)/2)+2;return a[n];

}

如果n>1000000會爆

我知道了 你把n設在全域變數

又放在遞迴裡 所以會RE

請忽視我剛剛的回覆 是我思慮不周 抱歉

其實還有一點小地方 就是int 跟 long long的變換有一點問題

 
ZeroJudge Forum