思路:
计算前缀和,如果前缀和s[i]==n即输出yes 否则no
#include <bits/stdc++.h>
using namespace std;
const int N=510;
int main()
{
int s[N],a[N];
bool f=false;
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
a[i]=i;
s[i]=s[i-1]+a[i];
}
for(int i=1;i<=n;i++)
if(s[i]==n)
{
f=true;
break;
}
if(f) cout<<"YES";
else cout<<"NO";
}
思路:
向上取整公式
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int s=0,k=5;
while(s+k<n)
{
s+=k;
k*=2;
}
n-=s;
int len=k/5;
int res=(n+len-1)/len-1;
cout<<(char)(res+'a');
return 0;
}