zoukankan      html  css  js  c++  java
  • 杭电4639

    居然在最后的输出形式那里卡了很久,忘记除10007,忘记输出Case 希望下次不要犯这种错误

    #include "iostream"
    #include "string.h"
    using namespace std;
    int f[10100][100],maxb=0;
    char list[110][10100];
    int max(int a,int b){return a>b?a:b;}
    
    void work(){
      int i,count,flag,j,num;
      memset(f,0,sizeof(f));
      f[0][0]=1;
      f[1][0]=1;
      f[2][0]=2;
      f[3][0]=3;
      count=1;
      for(i=4;i<=maxb;i++){
        flag=0;
        for(j=0;j<count;j++){
         f[i][j]=f[i-1][j]+f[i-2][j]+flag;
         flag=f[i][j]/10;
         f[i][j]=f[i][j]%10;
        }
        if(flag!=0){
          f[i][j]=flag;
          count++;
        }
        flag=0;
        if(f[i][4]>=1){
          flag=1;
          if(f[i][3]>=0){
            flag=1;
            if(f[i][2]>=0){
              flag=1;
              if(f[i][1]>=0){
                flag=1;
                if(f[i][0]>=7){
                  flag=1;
                }
              }
            }
          }
        }
        if(flag){
          num=f[i][4]*10000+f[i][3]*1000+f[i][2]*100+f[i][1]*10+f[i][0];
          num=num%10007;
          f[i][4]=num/10000;
          num=num%10000;
          f[i][3]=num/1000;
          num=num%1000;
          f[i][2]=num/100;
          num=num%100;
          f[i][1]=num/10;
          f[i][0]=num%10;
        }
        count=4;
        //cout<<"* ";cout<<i<<' ';for(j=count-1;j>=0;j--)cout<<f[i][j];cout<<endl;
      }
    }
    
    int chang(int a){
        return f[a][4]*10000+f[a][3]*1000+f[a][2]*100+f[a][1]*10+f[a][0];
    }
    
    void work1(int a){
      int data=0,number=1,i;
      for(i=0;i<strlen(list[a]);i++){
        if(list[a][i]=='h'&&list[a][i+1]=='e'){data++;i++;}
        else {
         // cout<<data<<" ++++ "<<i<<endl;
          number*=chang(data);
          if(number>10007)
          number=number%10007;
          data=0;
        }
      }
      //cout<<data<<"()"<<endl;
      if(data!=0)number*=chang(data);
      if(number>10007)number=number%10007;
      cout<<"Case "<<a<<": "<<number<<endl;
    }
    
    int main(){
       int Case,i=1;
       cin>>Case;
       while(Case--){
          cin>>list[i];
          maxb=strlen(list[i]);
          work();
          work1(i);
          i++;
       }
    }
  • 相关阅读:
    POJ
    POJ
    POJ
    POJ-1797 Heavy Transportation
    POJ
    HDU
    CF-576 C MP3 (离散化)
    Pandas 用法汇总
    Pandas 的使用
    Numpy 算术函数
  • 原文地址:https://www.cnblogs.com/dowson/p/3265537.html
Copyright © 2011-2022 走看看