QY1. 循环数比较
描述
对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020.输入描述
输入包括一行,一行中有4个正整数x1, k1, x2, k2(1 ≤ x1,x2 ≤ 10^9, 1 ≤ k1,k2 ≤ 50),以空格分割输出描述
如果v1小于v2输出"Less",v1等于v2输出"Equal",v1大于v2输出"Greater".示例1
输入:
1010 3 101010 2
输出:
Equal
C 解法, 执行用时: 2ms, 内存消耗: 228KB, 提交时间: 2019-05-13
#include<stdio.h> #define N 300 int repeat(int x,int k,int *v) { int i,j=0,m,t; while(x) { v[j++]=x%10; x/=10; } for(i=0;i<j/2;i++) { t=v[i]; v[i]=v[j-1-i]; v[j-1-i]=t; } for(i=1;i<k;i++) for(m=0;m<j;m++) v[m+i*j]=v[m];//暂时不知道为什么不能用v[j++]=v[m]; return j*k; } int main() { int i,a,b,k1,k2,x1,x2,v1[N],v2[N]; scanf("%d %d %d %d",&x1,&k1,&x2,&k2); a=repeat(x1,k1,v1); b=repeat(x2,k2,v2); if(a<b) printf("Less"); else if(a==b) { for(i=0;i<a;i++) { if(v1[i]<v2[i]) { printf("Less"); break; } else if(v1[i]>v2[i]) { printf("Greater"); break; } } if(i>=a) printf("Equal"); } else printf("Greater"); }
C 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2022-06-10
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int main() { char *a=malloc(sizeof(char)*500); int sizea=0; int sizeb=0; char *b=malloc(sizeof(char)*500); scanf("%s",a); scanf("%d",&sizea); scanf("%s",b); scanf("%d",&sizeb); char *c=malloc(sizeof(char)*500); char *d=malloc(sizeof(char)*500); for(int i=1;i<=sizea;i++){ strcat(c,a); } for(int i=1;i<=sizeb;i++){ strcat(d,b); } if(strlen(c)>strlen(d)){ printf("Greater"); return 0; } if(strlen(c)<strlen(d)){ printf("Less"); return 0; } if(strcmp(c,d)>0){ printf("Greater"); } if(strcmp(c,d)==0){ printf("Equal"); } if(strcmp(c,d)<0){ printf("Less"); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 348KB, 提交时间: 2019-06-19
#include <stdio.h> //牛客循环数比较 #include <stdlib.h> #include <string.h> main() { int k1, k2, i, flag = 0; char x1[15], x2[15], s1[500] , s2[500]; scanf("%s %d %s %d", x1, &k1, x2, &k2); strcpy(s1, x1); strcpy(s2, x2); for(i = 0; i < k1 - 1; i++) { strcat(s1, x1); //x1的内容连接到s1 } for(i = 0; i < k2 - 1; i++) { strcat(s2, x2); } if(strlen(s1) > strlen(s2)) { printf("Greater\n"); return 0; } if(strlen(s1) < strlen(s2)) { printf("Less\n"); return 0; } for(i = 0; i < strlen(s1); i++) { // flag = 0; if(s1[i] > s2[i]) { printf("Greater\n"); return 0; } if(s1[i] < s2[i]) { printf("Less\n"); return 0; } /* if(s1[i]==s2[i]) { printf("Equal\n"); return 0; }*/ flag = 1; } if(flag == 1) printf("Equal\n"); }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2019-04-28
#include<stdio.h> #define N 300 int repeat(int x,int k,int *v) { int i,j=0,m,t; while(x) { v[j++]=x%10; x/=10; } for(i=0;i<j/2;i++) { t=v[i]; v[i]=v[j-1-i]; v[j-1-i]=t; } for(i=1;i<k;i++) for(m=0;m<j;m++) v[m+i*j]=v[m];//暂时不知道为什么不能用v[j++]=v[m]; return j*k; } int main() { int i,a,b,k1,k2,x1,x2,v1[N],v2[N]; scanf("%d %d %d %d",&x1,&k1,&x2,&k2); a=repeat(x1,k1,v1); b=repeat(x2,k2,v2); if(a<b) printf("Less"); else if(a==b) { for(i=0;i<a;i++) { if(v1[i]<v2[i]) { printf("Less"); break; } else if(v1[i]>v2[i]) { printf("Greater"); break; } } if(i>=a) printf("Equal"); } else printf("Greater"); }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-03-06
#include <stdio.h> #include <string.h> int judge(char a[],int v1,char b[],int v2) { int i; char s1[500],s2[500]; strcpy(s1,a); strcpy(s2,b); for(i=0;i<v1-1;i++) strcat(s1,a); for(i=0;i<v2-1;i++) strcat(s2,b); if(strlen(s1)>strlen(s2)) return 1; if(strlen(s1)<strlen(s2)) return 2; for(i=0;i<v1;i++) { if(s1[i]>s2[i]) return 1; if(s1[i]<s2[i]) return 2; } return 0; } int main() { int v1,v2,r; char x1[12],x2[12]; scanf("%s%d%s%d",&x1,&v1,&x2,&v2); r=judge(x1,v1,x2,v2); switch(r) { case 0:printf("Equal"); break; case 1:printf("Greater");break; case 2:printf("Less");break; } return 0; }