每日一练 通货膨胀-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即可。

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


相关文章
|
8月前
|
存储 程序员 C语言
Kevin的128纪念日
Kevin的128纪念日
89 0
LeetCode-2100 适合打劫银行的日子
LeetCode-2100 适合打劫银行的日子
|
Windows
英语捡贝壳
记录今日遇到的英文口语缩写,打国际服的小伙伴一定很清楚这些缩写含义
|
网络安全 数据安全/隐私保护
【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-疑惑的汉字
ROT13(回转13位,rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码。ROT13被描述成“杂志字谜上下颠倒解答的Usenet点对点体”。ROT13 也是过去在古罗马开发的凯撒加密的一种变体。
142 0
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
|
C语言 C++
蓝桥杯2016届省赛B组(生日蜡烛)
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
147 0
【码上公益|最美的代码】第一期:尘肺病患者的“数字救助快线”
「最美的代码」“码上公益”平台自推出以来,已汇聚了6000+爱心极客,他们在业余时间,用代码为那些从未谋面的人提供帮助,捕捉濒危动物的行踪、为事实孤儿遮风挡雨、为弱势群体鼎力相撑…我们想持续记录这些‘小’故事,唤起更多人心底的善意。尘肺病患者的“数字救助快线”摘要:爱心极客48小时完成尘肺病求助申请系统,为尘肺病患者搭起数字救助的快线。据媒体报道,中国有600万尘肺病患者。因为生产环境及工艺材料等
210 0
【码上公益|最美的代码】第一期:尘肺病患者的“数字救助快线”
|
安全
蝙蝠侠在越南!花了两万多美元,这位建筑系大一学生造了辆蝙蝠车!
蝙蝠侠在越南!花了两万多美元,这位建筑系大一学生造了辆蝙蝠车!
184 0