1 solutions

  • 0
    @ 2025-11-5 19:34:10

    C :

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h> 
    main()
    {
    	int i,j,k,p,x,sum;
    	int n,m;
    	int a,b,c;
    	int f[4];
    	for(i=0;i<4;i++)
    	{
    	scanf("%d %d %d",&a,&b,&c);
    	f[i]=a*10000+b*100+c;
    }
    p=f[0];
    sum=101; 
    for(i=1;i<=99;i++)
    for(j=1;j<=99;j++)
    for(k=1;k<=99;k++)
    {
    	   if((i*f[1]+j*f[2]+k*f[3])%f[0]==0) 
    	   {
    	   	p=(i*f[1]+j*f[2]+k*f[3])/f[0];
    	   	if(p>100)break;
    	    if(p<sum)
    	    {
    	    	sum=p;
    	    	a=i;b=j;c=k;
    	    }
    	   	
    	   } 
    }
    if(sum==101)printf("NONE\n");
    else 
    printf("%d %d %d %d\n",a,b,c,sum); 
    return 0;
    }
    
    

    C++ :

    #include<cstdio>
    using namespace std;
    typedef struct
    {
     	int x,y,z;	
    }q;
    q p[5];
    int gcd(int m,int n)
    {
    	if(n==0)
    	return m;
    	return gcd(n,m%n);
    }
    int main()
    {
    	int i,j,k;
    	for(i=1;i<5;i++)
    	scanf("%d %d %d",&p[i].x,&p[i].y,&p[i].z);
    	for(i=0;i<=100;i++)
    	{
    		for(j=0;j<=100;j++)
    		{
    			for(k=0;k<=100;k++)
    			{
    				int a[4],s;
    				a[1]=i*p[2].x+j*p[3].x+k*p[4].x;
    				a[2]=i*p[2].y+j*p[3].y+k*p[4].y;
    				a[3]=i*p[2].z+j*p[3].z+k*p[4].z;
    				s=gcd(a[1],a[2]);
    				if(s==0)
    				continue;
    				if(a[3]%s==0)
    				{
    					if(s==a[3])
    					{
    						if(a[1]==(p[1].x)&&a[2]==(p[1].y)&&a[3]==(p[1].z))
    						{
    							printf("%d %d %d 1\n",i,j,k,s);
    							return 0;
    						}
    					}
    					else 
    					{
    						if(a[1]==p[1].x&&a[2]==p[1].y&&a[3]==p[1].z)
    						{
    							printf("%d %d %d 1\n",i,j,k,s);
    							return 0;	
    						}
    						if(a[1]==(p[1].x*s)&&a[2]==(p[1].y*s)&&a[3]==(p[1].z*s))
    						{
    							printf("%d %d %d %d\n",i,j,k,s);
    							return 0;
    						}
    					}
    				}
    				else
    				{	
    					if((a[1]==p[1].x)&&(a[2]==p[1].y)&&(a[3]==p[1].z))
    					{
    						printf("%d %d %d 1\n",i,j,k);
    						return 0;
    					}
    				}
    			}
    		}
    	}
    	printf("NONE\n");
    	return 0;
    }
    

    Pascal :

    program ratios;
    var i,j,k,x,y,z,min,tip1,tip2,tip3,ans:longint;
        a,b,c:array[0..100] of longint;
    begin
    readln(x,y,z);
    for i:=1 to 3 do
     readln(a[i],b[i],c[i]);
     min:=maxlongint;
    for i:=0 to 99 do
     for j:=0 to 99 do
      for k:=0 to 99 do
       begin
       if (a[1]*i+a[2]*j+a[3]*k<>0) and (b[1]*i+b[2]*j+b[3]*k<>0) and
        (c[1]*i+c[2]*j+c[3]*k<>0) then
       if ((a[1]*i+a[2]*j+a[3]*k) mod x=0) and
        ((b[1]*i+b[2]*j+b[3]*k) mod y=0) and
        ((c[1]*i+c[2]*j+c[3]*k) mod z=0) and ((a[1]*i+a[2]*j+a[3]*k) div x=(b[1]*i+b[2]*j+b[3]*k) div y)
        and ((b[1]*i+b[2]*j+b[3]*k) div y=(c[1]*i+c[2]*j+c[3]*k) div z) then
         begin
          if i+j+k<min then
           begin
            min:=i+j+k;
            ans:=(b[1]*i+b[2]*j+b[3]*k) div y;
            tip1:=i;
            tip2:=j;
            tip3:=k;
           end;
          end;
       end;
     if min<>maxlongint then
      writeln(tip1,' ',tip2,' ',tip3,' ',ans)
      else writeln('NONE');
    end.
    
    
    • 1

    Information

    ID
    19400
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By