zoukankan      html  css  js  c++  java
  • UESTC--1264--人民币的构造(数学规律)

    Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu

    Status

    Description

    我们都知道人民币的面值是$1、2、5、10$,为什么是这个数值呢,我们分析了下发现,从$1-10$的每个数字都可以由每种面值选出至多一张通过加法和减法(找钱)来构成,(比如:$1+2=3,5-1=4,5+1=6,5+2=7,1+2+5=8,10-1=9$)

    但是实际上,我们只需要$1、2、7$三种面值就可以组成$1-10$的每一个数字了

    ($1+2=3,7-1-2=4,7-2=5,7-1=6,7+1=8,7+2=9,7+1+2=10$)

    那么现在问题来了,给一个数$n$,请问最少需要多少种不同的面值就可以构成从$1-n$的所有数字,注意在构成每一个数字时同种面值不能超过$1$张。

    Input

    一个数字$n$(1<=$n$<=100000)

    Output

    一个数字,代表最少需要多少种不同的面值可以构成从$1-n$的所有数字。

    Sample Input

    10

    Sample Output

    3

    Hint

    Source

    第七届ACM趣味程序设计竞赛第三场(正式赛)

    这个规律也真是够了!!
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		int sum=13,t=0;
    		int cnt=3;
    		while(sum+t<n)
    		{
    			sum+=t;
    			t=sum;
    			sum=2*t+1;
    			cnt++; 
    		}
    		if(n==1)
    		printf("1
    ");
    		else if(n<=4)
    		printf("2
    ");
    		else if(n<=13)
    		printf("3
    ");
    		else printf("%d
    ",cnt);
    	}
    	return 0;
    } 


  • 相关阅读:
    三十六、主从复制监控
    三十五、主从复制原理
    IO模型
    格式化时间
    计算当前日期星座
    牛顿迭代法
    矩阵变换
    ffmpeg使用
    数独自动求解
    回溯迷宫找终点
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273511.html
Copyright © 2011-2022 走看看