• E




    https://vjudge.net/contest/173966#problem/E

    题目确实不好说,反正用大数加法+字典树就可以了,哇了N次我就不说什么了,
    主要是还说我的大数写错了,然后单独验证了,没毛病,但是貌似我之前的赋值是有问题的,
    然后不想写了,过了一天还是又翻出来了。

    1
    #include<iostream> 2 #include<stdio.h> 3 using namespace std; 4 string fib(string s1,string s2) 5 { 6 if(s1.length()<s2.length()) 7 { 8 string temp=s1; 9 s1=s2; 10 s2=temp; 11 } 12 int i,j; 13 if(s2.length()>49) 14 { 15 for(i=49,j=s2.length()+49-s1.length();i>=0;i--,j--) 16 { 17 s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0)); 18 if(s1[i]-'0'>=10) 19 { 20 s1[i]=char((s1[i]-'0')%10+'0'); 21 if(i) s1[i-1]++; 22 else s1='1'+s1; 23 } 24 } 25 } 26 else 27 { 28 for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--) 29 { 30 s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0)); 31 if(s1[i]-'0'>=10) 32 { 33 s1[i]=char((s1[i]-'0')%10+'0'); 34 if(i) s1[i-1]++; 35 else s1='1'+s1; 36 } 37 } 38 } 39 return s1; 40 } 41 string a[100002]; 42 int cnt=1; 43 int sum[10000050][11]; 44 int num[10000050]; 45 void add(string s,int number) 46 { 47 int root=0; 48 for(int i=0;i<s.length()&&i<42;i++) 49 { 50 int xx=s[i]-'0'; 51 if(!sum[root][xx]) 52 { 53 sum[root][xx]=cnt++; 54 num[sum[root][xx]]=number; 55 } 56 root=sum[root][xx]; 57 } 58 } 59 int Find(string s) 60 { 61 int root=0; 62 for(int i=0;i<s.length();i++) 63 { 64 int xx=s[i]-'0'; 65 root=sum[root][xx]; 66 if(root==0) 67 return 0; 68 } 69 return num[root]; 70 } 71 int main() 72 { 73 a[1]="1"; 74 a[2]="1"; 75 add(a[1],1); 76 add(a[2],2); 77 for(int i=3;i<=100000;i++) 78 { 79 a[i]=fib(a[i-1],a[i-2]); 80 add(a[i],i); 81 } 82 int T; 83 while(cin>>T) 84 { 85 int t=0; 86 string st; 87 while(T--) 88 { 89 t++; 90 cin>>st; 91 int tmp=Find(st); 92 if(tmp){ 93 cout<<"Case #"<<t<<": "<<tmp-1<<endl; 94 }else{ 95 cout<<"Case #"<<t<<": "<<-1<<endl; 96 } 97 } 98 } 99 return 0; 100 }
  • 相关阅读:
    (转)导弹跟踪算法
    中文linux安装oracle界面乱码解决方案
    linux下创建oracle表空间
    [INS-20802] Oracle Net Configuration Assistant failed
    Centos6.5下Oracle 11g R2安装过程
    设置MYSQL数据库编码为UTF-8
    如何在linux系统中设置静态ip地址
    Oracle Net Configuration Assistant failed异常的解决方案
    解决安装oracle11g r2时提示pdksh conflicts with ksh-20100621-2.el6.i686问题
    CentOS增加swap分区大小
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/7274423.html
Copyright © 2020-2023  润新知