微软编程一小时
由于通知的太尴尬,那时候人已在上海,所以没时间做,昨天晚上看了一下题目,自己写了一下,但是不能提交了,就放在这里让大家给我检查检查。
第一题,不知道是不是想的太复杂了,我把每个表达式都表示成分数的形式,然后减去9,然后进行比较。为了分数的加减以及比较,所以写了一个分数结构体,提供+,-,<的运算。
1 #include<iostream> 2 using namespace std; 3 struct fenshu{ 4 int fenzi; 5 int fenmu; 6 fenshu(){ 7 fenzi=1; 8 fenmu=1; 9 } 10 fenshu(int a){ 11 fenzi=a; 12 fenmu=1; 13 } 14 fenshu(int a,int b){ 15 fenzi=a; 16 fenmu=b; 17 } 18 fenshu operator - (const fenshu& b) const{ 19 fenshu c; 20 c.fenzi=fenzi*b.fenmu-b.fenzi*fenmu; 21 c.fenmu=fenmu*b.fenmu; 22 c.clear(); 23 return c; 24 } 25 bool operator < (const fenshu& b) { 26 if(fenzi*b.fenmu<fenmu*b.fenzi) 27 return true; 28 else 29 return false; 30 } 31 void clear(){ 32 if(fenzi<0) 33 fenzi=-fenzi; 34 for(int i=2;;){ 35 if(i<fenzi&&i<fenmu){ 36 if(fenzi%i==0&&fenmu%i==0){ 37 fenzi/=i; 38 fenmu/=i; 39 } 40 else 41 i++; 42 } 43 else 44 break; 45 } 46 } 47 }; 48 int main(){ 49 50 int n; 51 cin>>n; 52 fenshu nine(9); 53 fenshu minfenshu(1000); 54 int num; 55 for(int i=0;i<n;i++){ 56 int a,b; 57 char c; 58 fenshu xxx; 59 fenshu temp; 60 cin>>a>>c>>b; 61 switch(c){ 62 case '+': 63 temp.fenzi=a+b; 64 xxx=temp-nine; 65 if(xxx<minfenshu){ 66 minfenshu=xxx; 67 num=i+1; 68 } 69 break; 70 case '-': 71 temp.fenzi=a-b; 72 xxx=temp-nine; 73 if(xxx<minfenshu){ 74 minfenshu=xxx; 75 num=i+1; 76 } 77 break; 78 case '*': 79 temp.fenzi=a*b; 80 xxx=temp-nine; 81 if(xxx<minfenshu){ 82 minfenshu=xxx; 83 num=i+1; 84 } 85 break; 86 case '/': 87 temp.fenzi=a; 88 temp.fenmu=b; 89 xxx=temp-nine; 90 if(xxx<minfenshu){ 91 minfenshu=xxx; 92 num=i+1; 93 } 94 break; 95 default: 96 break; 97 } 98 99 } 100 cout<<num<<endl; 101 }
第二题是找最长的重复子串
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int n,maxlen=1; 5 cin>>n; 6 int a[301]; 7 for(int i=0;i<n;i++) 8 cin>>a[i]; 9 for(int i=0;i<n;i++){ 10 for(int j=i+1;j<n;j++){ 11 if(a[i]==a[j]){ 12 for(int k=1;k<n;k++){ 13 if(i+k==j||j+k==n){ 14 if(k>maxlen){ 15 maxlen=k; 16 } 17 break; 18 } 19 20 if(a[i+k]==a[j+k]) 21 continue; 22 else 23 if(k+1>maxlen){ 24 maxlen=k+1; 25 break; 26 } 27 } 28 } 29 } 30 } 31 cout<<maxlen<<endl; 32 }
浙公网安备 33010602011771号