2020牛客暑期多校训练营(第一场)F Infinite String Comparision

最后有个>没截全。
————————————————————————————————————————————————————————————————————————
签到题,全场唯一会做。思路是对的,代码码歪了。
直接补是不行的,样例3很明显了。重复两次再补足就ok了。但是码歪了。
看了一下别人的代码,有个比较巧妙的点,就是重复的部分直接取余,就不用进行字符串操作了。
还有一种很神奇的解法,p=a+b , q=b+a,然后比较一下pq就好了,没想清楚,以后满满想。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <stack> #include <queue> #include <map> #include <vector> #include <set> #include <deque> #include <cfloat> #include <algorithm> typedef long long ll; using namespace std; int gcd(int x,int y) { return y?gcd(y,x%y):x; } int lcm(int x,int y) { return x/gcd(x,y)*y; } int n,m,mod; char a[10000000],b[10000000]; int main() { while(scanf("%s",a)!=EOF) { scanf("%s",b); int lena=strlen(a); int lenb=strlen(b); int tag=0; int mx=max(lena,lenb); for(int i=0;i<mx*2;i++) { int aa=i%lena; int bb=i%lenb; if(a[aa]<b[bb]) { printf("<\n"); tag=1; break; } if(a[aa]>b[bb]) { printf(">\n"); tag=1; break; } } if(tag==0) { printf("=\n"); } } return 0; }

浙公网安备 33010602011771号