当前位置: 首页 > news >正文

CSDN - CSDN27题解

文章目录

    • 幸运数字
      • 题目描述
      • 解题思路
      • AC代码
    • 投篮
      • 题目描述
      • 解题思路
      • AC代码
    • 通货膨胀-x国货币
      • 题目描述
      • 解题思路
      • AC代码
    • 最后一位
      • 题目描述
      • 解题思路
      • AC代码

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/41

这次题目描述刚开始好像有些问题,之后被修正了

幸运数字

题目描述

小艺定义一个幸运数字的标准包含3条: 1、仅包含4或7。 2、幸运数字的前半部分数字之和等于后半部分数字之和。 3、
数字的长度是偶数。

解题思路

把输入当作字符串来处理即可

  1. 判断字符串长度是否为偶数
  2. 判断字符串中是否只包含4和7
  3. 判断字符串前半部分之和是否等于后半部分之和(其实直接用ASCII码进行计算,不必换算成整数再计算也可,因为前后两半字符串的长度是相同的)

AC代码

#include<bits/stdc++.h>
using namespace std;
int main() {string s;cin >> s;if (s.size() % 2) {puts("No");return 0;}for (char c : s) {if (c != '4' && c != '7') {puts("No");return 0;}}int cnt = 0;for (int i = 0; i < s.size() / 2; i++) {cnt += s[i] - '0';}for (int i = s.size() / 2; i < s.size(); i++) {cnt -= s[i] - '0';}puts(cnt ? "No" : "YES");return 0;
}

投篮

题目描述

小明投篮,罚球线投球可得1分,在三分线内投篮得分可以得到2分,在三分线以外的地方投篮得分可以得到3分,连续投
进得分累计,一旦有一个球没投进则得分清零,重新计算。现给出所有得分记录(清零不计入得分),请你计算一下小明
最多连续投进多少个球?

解题思路

遍历每次的得分,如果当前得分不大于上次得分,则视为“头球中断”

否则视为“连续进球”

统计一下最大的连续进球次数即可

AC代码

#include <bits/stdc++.h>
using namespace std;
int main() {int ans = 0;int thisCnt = 0;int lastScore = 0;int n;cin >> n;while (n--) {int t;cin >> t;if (t <= lastScore) {lastScore = 0;thisCnt = 0;}thisCnt++;ans = max(ans, thisCnt);lastScore = t;}cout << ans << endl;return 0;
}

通货膨胀-x国货币

题目描述

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

解题思路

只需要按照题目的意思,在n不为质数的时候,不断除以“大于1的最小因子”即可

首先,判断一个数nnn是否为质数,只需要从2枚举到(n)\sqrt(n)(n),看其中某个数能否被nnn整除。如果都不能,则nnn是质数。

否则,我们就找到了nnn的“大于1的最小因子”,让nnn除以这个因子,得到的即为“下一个货币面值”

AC代码

#include <bits/stdc++.h>
using namespace std;
int main() {int n;cin >> n;if (n == 1) {puts("1");return 0;}int ans = 2;while (n > 1) {int k = sqrt(n);bool has = false;for (int i = 2; i <= k; i++) {if (n % i == 0) {n /= i;ans++;has = true;break;}}if (!has) {break;}}cout << ans << endl;return 0;
}

最后一位

题目描述

小明选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过
程中,小明会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum. 例如X = 509, 在黑板上出现过的数字依次
是509, 50, 5, 他们的和就是564. 小明现在给出一个sum,小明想让你求出一个正整数X经过上述过程的结果是sum.

解题思路

509能按照题目描述得到564,但是给你564怎么反推出来509呢?

我们来看一下564的构成。

564=509+50+5=(500+50+5)+(00+0)+(9)=5×111+0×11+9×1564 = 509 + 50 + 5 = (500 + 50 + 5) + (00 + 0) + (9) = 5\times111+0\times11+9\times1564=509+50+5=(500+50+5)+(00+0)+(9)=5×111+0×11+9×1

既然564=5×111+0×11+9×1564 = 5\times 111 + 0\times 11 + 9 \times 1564=5×111+0×11+9×1,那么为什么不反向地求出余数呢?

564÷111=5⋯9564÷111=5\cdots9564÷111=59

9÷11=0⋯99÷11=0\cdots99÷11=09

9÷1=9⋯09÷1=9\cdots09÷1=90

看到每次计算的了吗?

也就是说,我们用计算出的564564564,每次除以1111...11111...11111...1111...1111...1111...1.........111,每次的商组合起来就是原数。

AC代码

#include <bits/stdc++.h>
using namespace std;typedef long long ll;int main() {ll n;cin >> n;ll k = 111111111111111111;ll ans = 0;while (k) {ll yu = n / k;// printf("n = %lld, k = %lld, yu = %lld, ans = %lld\n", n, k, yu, ans); //*********ans = ans * 10 + yu;n -= yu * k;k /= 10;}cout << ans << endl;return 0;
}

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/128975414

http://www.lryc.cn/news/1605.html

相关文章:

  • docker拉取mysql
  • 在Linux上安装Python3
  • 23 种设计模式的通俗解释,看完秒懂
  • 如何做好需求管理?经验方法、模型、工具
  • 怎么用期货做风险对冲(如何利用期货对冲风险)
  • C++标准模板库type_traits源码剖析
  • Python获取公众号(pc客户端)数据,使用Fiddler抓包工具
  • Maven进阶
  • AXI实战(一)-为AXI总线搭建简单的仿真测试环境
  • 数据库管理-第五十六期 监控(20230210)
  • 测试开发,测试架构师为什么能拿50 60k呢需要掌握哪些技能呢
  • Miniblink 入门
  • [python入门㊷] - python存储数据
  • Little Fighter:旺角——NFT 系列来袭!
  • 基础篇:01-微服务概述
  • TC358775XBG替代方案|完美替代 TC358775XBG替代方案|低BOM成本DSI转LVDS方案CS5518
  • Android开发
  • virtualbox虚拟机导入到vmware esxi虚拟机
  • 如何使用命名空间管理C++代码
  • 海思3559:BT656调试笔记
  • reactor之hooks
  • 单片AR眼镜Monocle揭秘:基于反射棱镜,重15g续航1小时
  • 计算机视觉框架OpenMMLab开源学习(五):目标检测实战
  • SpringIOC推导IOC初步
  • Linux(centOS7)虚拟机中配置 vim
  • 消息中间件-RocketMQ入门 消息发送的三种方式
  • 【FLASH存储器系列十九】固态硬盘掉电后如何恢复掉电前状态?
  • Java知识点细节简易汇总——(7)面向对象编程(高级部分)
  • 阻塞式队列-生产者消费者模型
  • 引导滤波code