1 条题解

  • 0
    @ 2025-4-7 21:19:29

    C :

    #include<stdio.h>
    #include<string.h>
    main()
    {
    	int count[5],signal,n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		memset(count,0,sizeof(count));
    		signal=0;
    		if(n>=50)
    		{
    		count[0]=n/50;
    		n-=count[0]*50;
    		if(count[0]!=0)
    		{
    			signal=1;
    		printf("50*%d",count[0]);
    		}
    		}
    		if(n>=20)
    		{
    		count[1]=n/20;
    		n-=count[1]*20;
    		if(count[1]!=0)
    		{
    		if(signal)
    		printf("+");
    		signal=1;
    		printf("20*%d",count[1]);
    		}
    		}
    		if(n>=10)
    		{
    		count[2]=n/10;
    		n-=count[2]*10;
    		if(count[2]!=0)
    		{
    		if(signal)
    		printf("+");
    		signal=1;
    		printf("10*%d",count[2]);
    		}
    		}
    		if(n>=5)
    		{
    		count[3]=n/5;
    		n-=count[3]*5;
    		if(count[3]!=0)
    		{
    		if(signal)
    		printf("+");
    		signal=1;
    		printf("5*%d",count[3]);
    		}
    		}
    		if(n>=1)
    		{
    		count[4]=n;
    		if(count[4]!=0)
    		{
    		if(signal)
    		printf("+");
    		printf("1*%d",count[4]);
    		}
    	    }
    	    printf("\n");
    	}
    }
    

    C++ :

    /*
    题目:找零钱
    题目描述:小智去超市买东西,买了不超过一百块的东西。收银员想尽量用少的纸币来找钱。
    纸币面额分为50 20 10 5 1 五种。请在知道要找多少钱n给小明的情况下,输出纸币数量最少的方案。 1<=n<=99;
    输入:有多组数据  1<=n<=99;
    输出:对于每种数量不为0的纸币,输出他们的面值*数量,再加起来输出
    样例输入:
    25
    32
    样例输出:
    20*1+5*1
    20*1+10*1+1*2
    */
    #include<iostream>
    #include<stdio.h>
    #include<string>
    #include<algorithm>
    #include<string.h>
    #include<set>
    #include<vector>
    #include<queue>
    #include<stack>
    #include<limits.h>
    #include<math.h>
    #define FOR(i,a,b) for(int i=(a);i<(b);i++)
    #define FORD(i,a,b) for(int i=(a);i<=(b);i++)
    #define REP(i,b) FOR(i,0,b)
    #define CLR(a) memset(a,0,sizeof(a))
    using namespace std;
    #define maxn 20010
    int main(){
        //freopen("B.in","r",stdin);
        //freopen("B.out","w",stdout);
        int n;
        while(~scanf("%d",&n)){
            int a[51];
            CLR(a);
            int dn=n;
            while(dn>=50){
                dn-=50;
                a[50]++;
            }
            while(dn>=20){
                dn-=20;
                a[20]++;
            }
            while(dn>=10){
                dn-=10;
                a[10]++;
            }
            while(dn>=5){
                dn-=5;
                a[5]++;
            }
            while(dn>=1){
                dn--;
                a[1]++;
            }
            int flag=0;
            if(a[50]>0){
                if(flag==0){
                    flag=1;
                }
                else{
                    printf("+");
                }
                printf("50*%d",a[50]);
            }
            if(a[20]>0){
                if(flag==0){
                    flag=1;
                }
                else{
                    printf("+");
                }
                printf("20*%d",a[20]);
            }
            if(a[10]>0){
                if(flag==0){
                    flag=1;
                }
                else{
                    printf("+");
                }
                printf("10*%d",a[10]);
            }
            if(a[5]>0){
                if(flag==0){
                    flag=1;
                }
                else{
                    printf("+");
                }
                printf("5*%d",a[5]);
            }
            if(a[1]>0){
                if(flag==0){
                    flag=1;
                }
                else{
                    printf("+");
                }
                printf("1*%d",a[1]);
            }
            printf("\n");
        }
        return 0;
    }
    
    
    • 1

    信息

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