鱼C论坛

 找回密码
 立即注册
查看: 4330|回复: 17

[技术交流] [C++板块提升计划]奇特的算法(免费)

[复制链接]
发表于 2022-9-23 20:26:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 高山 于 2022-9-23 20:53 编辑

好久不见,下周1就要发布每周一练啦
话不多说,先上正题

                               
登录/注册后可看大图

题目描述:
某个人最近学会了如何把一个数减去1(不准笑),但她貌似不太会“退位”,所以她在减一时是这样操作的:
·如果这个数末尾不是0,那么正常减1
·否则,就把这个数的个位直接删掉(好有趣的算法
输入两个整数n和k,请你输出那个人的算法,对n进行k次减后得到几?
数据范围:2≤n≤109,1≤k≤50
样例输入1:
  1. 512 4
复制代码
样例输出1:
  1. 50
复制代码
样例输入2:
  1. 1000000000 9
复制代码
样例输出2:
  1. 1
复制代码
验证链接:
评论区链接:待发布
演示视频:
评论区链接:待发布
C++正式代码:
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.         int n,k;
  6.         cin>>n>>k;
  7.         while(k--)
  8.         {
  9.                 if(n%10 == 0)
  10.                 {
  11.                         n/=10;
  12.                 }
  13.                 else
  14.                 {
  15.                         n--;
  16.                 }
  17.         }
  18.         cout<<n;
  19.         return 0;
  20. }
复制代码
彩色版代码及源代码成品附件:
奇特的算法.zip (432.19 KB, 下载次数: 2)
专辑推荐订阅:
推荐的帖子:收录鱼C论坛推荐的帖子  订阅传送门

每周一练系列:专门发布每周一练(代替发布人也会被收录) 订阅传送门
结语:
这个帖子我没有收费,也没有回复查看的内容,还发了回帖奖励
不为别的,就为一个:求支持!

评分

参与人数 2荣誉 +6 鱼币 +6 收起 理由
zhangjinxuan + 1 + 1 鱼C有你更精彩^_^
小伤口 + 5 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-9-23 20:28:26 | 显示全部楼层
演示视频:待公布

测试连接:待公布

每周一练下篇预告:质数筛(由 zhangjinxuan 周一发布)

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 20:49:22 | 显示全部楼层

回帖奖励 +2 鱼币

  1. #include <bits/stdc++.h>

  2. using namespace std;

  3. int main() {
  4.         int n, k;
  5.         scanf("%d%d", &n, &k);
  6.         while (k--) {
  7.                 if (n % 10)
  8.                         --n;
  9.                 else
  10.                         n /= 10;
  11.         }
  12.         printf("%d", n);
  13. }
复制代码

评分

参与人数 1荣誉 +5 收起 理由
高山 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 21:48:20 | 显示全部楼层

回帖奖励 +2 鱼币

  1. #include <iostream>

  2. using std::cin, std::cout, std::endl;

  3. size_t sub(size_t n, size_t k) {
  4.     if(k == 0) return n;
  5.     n = n % 10 == 0 ? n / 10 : n - 1;
  6.     return sub(n, k - 1);
  7. }

  8. int main(void) {
  9.     size_t n, k;
  10.     cin >> n >> k;
  11.     cout << sub(n, k) << endl;
  12.     return 0;
  13. }
复制代码

评分

参与人数 1鱼币 +3 收起 理由
高山 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-23 20:29:22 | 显示全部楼层
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 20:39:29 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-23 20:40:28 | 显示全部楼层

回帖奖励 +2 鱼币

好有趣的题目,支持支持
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-23 20:44:06 | 显示全部楼层
小伤口 发表于 2022-9-23 20:40
好有趣的题目,支持支持

感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 20:44:11 | 显示全部楼层

回帖奖励 +2 鱼币

高山 发表于 2022-9-23 20:29
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些

币币!咳咳,币不币的不重要,关键是我来啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-23 20:44:43 | 显示全部楼层
元豪 发表于 2022-9-23 20:44
币币!咳咳,币不币的不重要,关键是我来啦

这个……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 20:47:55 | 显示全部楼层

回帖奖励 +2 鱼币

Easy!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-23 20:52:45 | 显示全部楼层
本帖最后由 zhangjinxuan 于 2022-9-23 20:54 编辑

个位删掉,不是各位删掉..

谢谢修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-23 22:21:56 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-23 22:46:34 | 显示全部楼层

回帖奖励 +2 鱼币

感谢楼主无私奉献
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 07:02:47 | 显示全部楼层

回帖奖励 +2 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-24 07:12:34 | 显示全部楼层

回帖奖励 +2 鱼币

某个人最近学会了如何把一个数减去1(不准笑,这里没有笑),但她貌似不太会“退位”,所以她在减一时是这样操作的:
·如果这个数末尾不是0,那么正常减1
·否则,就把这个数的个位直接删掉(好有趣的算法,笑个不停
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 07:14:33 | 显示全部楼层
高山 发表于 2022-9-23 20:29
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些

学生党
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-24 11:23:20 | 显示全部楼层
本帖最后由 cnkizy 于 2022-9-24 11:24 编辑

发里福笑的姿势来了。
  1. #include <stdio.h>

  2. int main() {
  3.     int n, k;
  4.         while (true) {
  5.                 scanf_s("%d %d", &n, &k);
  6.                 __asm {
  7.                 loop_start:
  8.                         cmp dword ptr[k],0   // k为0则结束循环
  9.                         je loop_end
  10.                         dec        dword ptr[k]     // k = k -1
  11.                         mov eax, dword ptr[n] // 做除法
  12.                         cdq
  13.                         mov ecx, 10
  14.                         idiv ecx
  15.                         push eax         // 保存商
  16.                         test edx, edx    // 判断个位数是否为0
  17.                         je sub_power
  18.                         add esp, 4       // 丢掉商
  19.                         dec dword ptr[n] // n = n - 1
  20.                         jmp loop_start   // 继续循环
  21.                 sub_power:
  22.                         pop dword ptr[n] // 余数为0则n为商,n = 商
  23.                         jmp loop_start   // 继续循环
  24.                 loop_end:
  25.                 }
  26.                 printf("%d\n", n);
  27.         }
  28. }
复制代码

发里福笑的姿势
111.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表