每日一练 通货膨胀-x国货币

简介: 每日一练 通货膨胀-x国货币

本次来自CSDN本站的2023年3月16日(期)题目!

题目描述

X国发行货币最高面额为n。 次高面额为n的因子。 以此类推。 X国最多发行多少种货币。

输入描述

输入整数n。(1<=n<=1000000)表示货币的最大面额

输出描述

输出货币的种类

示例:输入10,输出3

题目原图

解题思路

这道题可以用贪心的思路来解决。

首先,可以发现最大面额的货币只有一种,次大面额的货币可以是最大面额的因数,再往下,每种货币面额只能是它上一个面额的因数,所以每个面额只能由上一个面额的因数转移而来。因此,我们从最大面额开始,不断求出当前面额的因数,直到得到面额为1,这样就可以得到所有的货币种类数。

具体地,可以采用一个循环,从最大面额n开始,每次找到当前面额i的最大因数j,然后将i更新为j,继续循环,直到i等于1时结束循环,循环过程中计数器加1即可。

实现时,可以用一个while循环不断找到当前面额的最大因数,可以用i/2的方式加速查找。代码如下:

代码实现

// 请关闭中文输入法,用英文的字母和标点符号。
// 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
// 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
// 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
// 模版代码提供基本的输入输出框架,可按个人代码习惯修改
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int solution(int n){
    int result = 0;
    for (int i = n;i>=1;i--){
        if(n%i == 0) {
            result++;
            n = i;
        }
    }
    // TODO:
    return result;
}
int main() {
    int n;
    std::cin>>n;
    int result = solution(n);
    std::cout<<result<<std::endl;
    return 0;
}

用的是示例模板!采用的C++语言编写!

运行结果

难点和亮点

首先要想到的是,最高面额的货币肯定是必须发行的,因此最多的货币种类数目至少是1。接着,如果最高面额为n,那么次高面额一定是n的因子,次次高面额一定是次高面额的因子,以此类推,直到最低面额为1为止。

因此,我们可以从最高面额n开始,依次找出它的因子,再找出每个因子的因子,直到找到最低面额1为止,这样就可以快速计算出货币种类的数目。在找因子的过程中,可以使用从1到n的循环,判断每个数是否是n的因子来实现。

另外,可以利用一个变量count来记录已经找到的货币种类数目,每找到一个新的货币面额,就将count加1,最终输出count即可。

总之,这道编程题的亮点在于需要巧妙地利用数学知识和循环,快速计算出最多的货币种类数目。


相关文章
|
11月前
C国演义 [第十二章]
C国演义 [第十二章]
|
11月前
|
算法
C国演义 [第十章]
C国演义 [第十章]
|
4月前
|
JavaScript 前端开发 程序员
明确了!国家发布程序员和搬砖民工一样,都是农民工!
前几天我们发现,人社局官网发布了一则报告,显示软件开发和信息技术服务业都属于新生农工,不只是码农,所有在互联网工作者(户籍在老家的)都属于民工。
|
网络安全 数据安全/隐私保护
【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-疑惑的汉字
ROT13(回转13位,rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码。ROT13被描述成“杂志字谜上下颠倒解答的Usenet点对点体”。ROT13 也是过去在古罗马开发的凯撒加密的一种变体。
129 0
|
物联网 区块链
五常大米引入蚂蚁金服区块链,从大米“出生”就开始“验明正身”
小蚂蚁说: 黑龙江五常因地处偏北,水质清甜零污染,其出产的五常大米因此被《舌尖上的中国》评为“中国最好的稻米”。但因为五常大米名声大且产量不高,市场上也出现了大量的假冒伪劣产品,普通市民难以分辨。
1676 0
|
程序员
中国第一位程序员的悲哀,回国12年后,不堪受辱自杀身亡
本文讲述中国计算机之父董铁宝的故事。
3295 0