URL: http://codeforces.com/contest/805
就写了前4个水题
A. Fake NP
#include<stdio.h>
#include<math.h>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
int main()
{
int l,r;
scanf("%d%d",&l,&r);
if(l==r) printf("%d\n",l);
else puts("2");
return 0;
}
B. 3-palindrome
#include<stdio.h>
#include<math.h>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;++i){
putchar(i/2%2==0?'a':'b');
}
putchar('\n');
return 0;
}
C. Find Amir
#include<stdio.h>
#include<math.h>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",(n-1)/2);
return 0;
}
D. Minimum number of steps
多想一下就可以了,不难发现就是个一维dp问题
#include<stdio.h>
#include<string.h>
const int MAXN=1e6+5;
const long long MOD = 1e9+7;
char s[MAXN];
int main()
{
gets(s);
int len=strlen(s);
long long k=0,ans=0;
for(int i=len-1;i>=0;--i){
if(s[i]=='b') ++k;
else {
ans+=k;
ans%=MOD;
k<<=1;
k%=MOD;
}
}
printf("%lld\n",ans);
return 0;
}