http://acm.hust.edu.cn/problem.php?cid=1106&pid=7
题意:
给一张纸A面向上,可上下左右折叠,折完后展开,输出A面外凸折痕的条数;
#include<iostream> #include<cstdio> using namespace std; char ch[2000000]; int main() { int T; scanf("%d",&T); while(T--) { scanf("%s",ch); long long x=0,y=0,tmp=1; for(int i=0;ch[i];i++) { if(ch[i]=='D' || ch[i]=='U') { y=(y+tmp/2)%100000009; x=(x*2)%100000009; } else { x=(x+tmp/2)%100000009; y=(y*2)%100000009; } tmp*=2; tmp%=(100000009*2); } printf("%lld\n",(x+y)%100000009); } return 0; }