1 条题解

  • 0
    @ 2024-5-10 0:45:58

    C :

    #include<stdio.h>
    
    int main()
    {
    	int t,n;
    	scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%d",&n);
    		if(n<150)
    			printf("%d\n",n);
    		else if(n<=200||n>=300)
    			printf("%d\n",n%50);
    		else
    			printf("%d\n",n-200);
    	}
    	return 0;
    }
    

    C++ :

    #include<stdio.h>
    
    int main()
    {
    	int t,n;
    	scanf("%d",&t);
    	while(t--)
    	{
    		scanf("%d",&n);
    		if(n<150)
    			printf("%d\n",n);
    		else if(n<=200||n>=300)
    			printf("%d\n",n%50);
    		else
    			printf("%d\n",n-200);
    	}
    	return 0;
    }
    

    Pascal :

    program p1023;
    var a,b,c:longint;
        min,i,j,k,t,m,n,s:longint;
    begin
     readln(t);
     a:=150; b:=200; c:=350;
     for m:=1 to t do
      begin
        min:=maxlongint;
        readln(n);
        for i:=0 to n div a do
          for j:=0 to n div b do
           for k:=0 to n div c do
             begin
              s:=n-i*a-j*b-c*k;
              if (s<min) and (s>=0) then
               min:=n-i*a-j*b-c*k;
             end;
        writeln(min);
      end;
    end.
    

    Java :

    public class Main {
                public static void main(String[] args) { 
                  java.util.Scanner input = new java.util.Scanner(System.in) ;
                  int n = input.nextInt();
             for(int l =0;l <n;l++){
                 int N = input.nextInt();
                 int a = N/350;
                 int b = N/200;
                 int c = N/150;
                 int max = 0;
                 for(int i=0;i<=a;i++){
                     for(int j=0;j<=b;j++){
                         for(int k = 0;k<=c;k++){
                             if(i*350+j*200+k*150>max&&i*350+j*200+k*150<=N)
                             max=i*350+j*200+k*150;
                            }
                        }
                    }
                   System.out.println(N-max);
                }
            }
        }
                 
    

    Python :

    import itertools,sys
    
    def check(m,data):
        result = []
        for i in range(1,len(data)+1):
           for j in itertools.combinations(data,i):
               n,cash = divmod(m,sum(j))
               result.append(cash)
        return min(result)
    
    i = 1
    data = [150,200]
    for line in sys.stdin:
        a = line.split()
        if i!=1:
              if  int(a[0])<300:
                  print check(int(a[0]),data)
              else:
                  print int(a[0])%50
        i += 1
    
    • 1

    信息

    ID
    6217
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者