机器人m号.cpp

来自「acm竞赛题」· C++ 代码 · 共 33 行

CPP
33
字号
#include"stdio.h"
#define N 10000
int main()
{    int i,j,k,l,r,q,t,r1,r2,r3,p[2000],e[2000],s[N+4],a[2000];
     r1=r2=0;t=s[0]=r3=1;
     for(i=1;i<N+4;i++)s[i]=0;
     scanf("%d",&k);
     for(i=1;i<=k;i++)scanf("%d%d",&p[i],&e[i]);
     if(p[1]==2)t=2;
     for(i=t;i<=k;i++)
         for(j=1000;j>=1;j--)
         {    s[j]+=s[j-1]*(p[i]-1);
              s[j]%=N;
         }
     for(i=1;i<=1000;i++)
         if(i&1)r1=(r1+s[i])%N;
         else   r2=(r2+s[i])%N;
     for(t=k,i=1;i<=t;i++)
     {   r=e[i];q=0;
         while(r)
         {q++;a[q]=r%2;r/=2;}
         for(l=1,j=q;j>=1;j--)
         {    l=l*l%N;
              if(a[j]==1)
              l=l*p[i]%N;
         }
         r3=r3*l%N;
     }
     r3=(r3+30000-r1-r2-1)%N;
     printf("%d\n%d\n%d\n",r2,r1,r3);
     return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?