郑州网站建设 云极,wordpress 打不开主题,前端学习网站建设教程,海南建设教育执业网站最近才回学校。在家学习的计划不翼而飞。但是回到学校了#xff0c;还是没有找回状态。 现在是大三了#xff0c;之前和同学聊天#xff0c;说才大三无论是干什么#xff0c;考研#xff0c;找工作#xff0c;考公#xff0c;考证书 还都是来的及的。 但是心里面… 最近才回学校。在家学习的计划不翼而飞。但是回到学校了还是没有找回状态。 现在是大三了之前和同学聊天说才大三无论是干什么考研找工作考公考证书 还都是来的及的。 但是心里面有点慌 还要学习的东西太多了离找工作的标准还很远考研的话英语又是道坎。 也许是越使人痛苦的东西自己越想去逃避。不去想也许就不会发生了。这种行为使我感到很大的罪恶感通过去玩游戏发呆看小说听音乐去逃避现实。麻木自己的内心感到的充足逃避现实。 所以要改变 那就现在。 题目
给你一个整数 total 表示你拥有的总钱数。同时给你两个整数 cost1 和 cost2 分别表示一支钢笔和一支铅笔的价格。你可以花费你部分或者全部的钱去买任意数目的两种笔。
请你返回购买钢笔和铅笔的 不同方案数目 。
示例 1
输入total 20, cost1 10, cost2 5
输出9
解释一支钢笔的价格为 10 一支铅笔的价格为 5 。
- 如果你买 0 支钢笔那么你可以买 0 1 2 3 或者 4 支铅笔。
- 如果你买 1 支钢笔那么你可以买 0 1 或者 2 支铅笔。
- 如果你买 2 支钢笔那么你没法买任何铅笔。
所以买钢笔和铅笔的总方案数为 5 3 1 9 种。示例 2
输入total 5, cost1 10, cost2 10
输出1
解释钢笔和铅笔的价格都为 10 都比拥有的钱数多所以你没法购买任何文具。所以只有 1 种方案买 0 支钢笔和 0 支铅笔。提示
1 total, cost1, cost2 10 思路
很简单的一道题
先比较两个商品的价格先买0个const1 在用剩下的钱看可以买几个const2 将(total-num*cost1)/cost21;结果进行累加 在买1个const1..... 直到剩下的钱不能买num个const1为止。 循环计算的方法来解决买钢笔和铅笔的方案数问题。具体解释如下 首先检查cost1和cost2的大小关系如果cost1大于cost2则交换它们的值以确保cost1表示价格较低的钢笔。 初始化变量num和sum分别用于迭代计数和累计方案数。 使用一个while循环当num乘以cost1小于等于total时进行迭代。 在循环体内计算剩余钱数(total-num*cost1)除以cost2并加1表示可以购买的铅笔的数量。将该数量累加到sum中。 将num增加1继续下一轮循环。 当循环结束后返回sum即为购买钢笔和铅笔的不同方案数。 该方法的思路是遍历钢笔数量num计算每个num对应的铅笔数量然后累加到总方案数sum中。时间复杂度为O(total/cost1)。 class Solution {
public:long long waysToBuyPensPencils(int total, int cost1, int cost2) {if(cost1cost2)return waysToBuyPensPencils(total,cost2,cost1);long num0,sum0; //注意num的范围用long进行定义防止溢出while(num*cost1total){sum(total-num*cost1)/cost21;num;}return sum;}
};