文章目录
- 前言
- 代码
- 思路
前言
简单题。AcWing 1216. 饮料换购
代码
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int ans=n;int t=n;while(t>=3){int a=t%3;t/=3;ans+=t;t+=a;}cout<<ans<<endl;return 0;
}
思路
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int ans=n;int t=n;while(t){int a=t%3;t/=3;t+=a;ans+=t;}cout<<ans<<endl;return 0;
}
超时了,奇怪了,难道不是这么写的吗。
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int ans=0;int t=n;while(t>=3){ans+=t;int a=t%3;t/=3;t+=a;}cout<<ans<<endl;return 0;
}
改成这样输入 100 输出 150 ,按道理我需要的是输出 149 的。哪里出问题了呢。输出 ans 调试了一下,过了。
#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;int ans=n;int t=n;while(t>=3){int a=t%3;t/=3;ans+=t;t+=a;}cout<<ans<<endl;return 0;
}