鱼C论坛

 找回密码
 立即注册
查看: 3697|回复: 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:
512 4
样例输出1:
50
样例输入2:
1000000000 9
样例输出2:
1
验证链接:
评论区链接:待发布
演示视频:
评论区链接:待发布
C++正式代码:
#include<iostream>
using namespace std;
int main()
{
        int n,k;
        cin>>n>>k;
        while(k--)
        {
                if(n%10 == 0)
                {
                        n/=10;
                }
                else
                {
                        n--;
                }
        }
        cout<<n;
        return 0;
}
彩色版代码及源代码成品附件:
奇特的算法.zip (432.19 KB, 下载次数: 2)
专辑推荐订阅:
推荐的帖子:收录鱼C论坛推荐的帖子  订阅传送门

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

评分

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

测试连接:待公布

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

#include <bits/stdc++.h>

using namespace std;

int main() {
        int n, k;
        scanf("%d%d", &n, &k);
        while (k--) {
                if (n % 10)
                        --n;
                else
                        n /= 10;
        }
        printf("%d", n);
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

#include <iostream>

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

size_t sub(size_t n, size_t k) {
    if(k == 0) return n;
    n = n % 10 == 0 ? n / 10 : n - 1;
    return sub(n, k - 1);
}

int main(void) {
    size_t n, k;
    cin >> n >> k;
    cout << sub(n, k) << endl;
    return 0;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-23 20:29:22 | 显示全部楼层
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +2 鱼币

好有趣的题目,支持支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

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

币币!咳咳,币不币的不重要,关键是我来啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

Easy!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

谢谢修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +2 鱼币

感谢楼主无私奉献
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +2 鱼币

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

使用道具 举报

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

学生党
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

int main() {
    int n, k;
        while (true) {
                scanf_s("%d %d", &n, &k);
                __asm {
                loop_start:
                        cmp dword ptr[k],0   // k为0则结束循环
                        je loop_end
                        dec        dword ptr[k]     // k = k -1
                        mov eax, dword ptr[n] // 做除法
                        cdq
                        mov ecx, 10
                        idiv ecx
                        push eax         // 保存商
                        test edx, edx    // 判断个位数是否为0
                        je sub_power
                        add esp, 4       // 丢掉商
                        dec dword ptr[n] // n = n - 1
                        jmp loop_start   // 继续循环
                sub_power:
                        pop dword ptr[n] // 余数为0则n为商,n = 商
                        jmp loop_start   // 继续循环
                loop_end:
                }
                printf("%d\n", n);
        }
}
发里福笑的姿势
111.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-8 01:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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