[C++板块提升计划]奇特的算法(免费)
本帖最后由 高山 于 2022-9-23 20:53 编辑好久不见,下周1就要发布每周一练啦话不多说,先上正题static/image/hrline/1.gif
题目描述:某个人最近学会了如何把一个数减去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;
}彩色版代码及源代码成品附件:专辑推荐订阅:推荐的帖子:收录鱼C论坛推荐的帖子订阅传送门
每周一练系列:专门发布每周一练(代替发布人也会被收录) 订阅传送门结语:这个帖子我没有收费,也没有回复查看的内容,还发了回帖奖励不为别的,就为一个:求支持! 演示视频:待公布
测试连接:待公布
每周一练下篇预告:质数筛(由 zhangjinxuan 周一发布)
#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);
} #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;
}
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些 {:7_146:} 好有趣的题目,支持支持{:9_236:} 小伤口 发表于 2022-9-23 20:40
好有趣的题目,支持支持
感谢 高山 发表于 2022-9-23 20:29
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些
币币!咳咳,币不币的不重要,关键是我来啦{:5_108:} 元豪 发表于 2022-9-23 20:44
币币!咳咳,币不币的不重要,关键是我来啦
这个…… Easy! 本帖最后由 zhangjinxuan 于 2022-9-23 20:54 编辑
个位删掉,不是各位删掉..
谢谢修改 {:5_108:} 感谢楼主无私奉献 {:7_146:} 某个人最近学会了如何把一个数减去1(不准笑,这里没有笑),但她貌似不太会“退位”,所以她在减一时是这样操作的:
·如果这个数末尾不是0,那么正常减1
·否则,就把这个数的个位直接删掉(好有趣的算法,笑个不停) 高山 发表于 2022-9-23 20:29
@zhangjinxuan @hveagle @元豪 @小伤口 求支持!
不够我在@些
学生党 本帖最后由 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,0 // k为0则结束循环
je loop_end
dec dword ptr // k = k -1
mov eax, dword ptr // 做除法
cdq
mov ecx, 10
idiv ecx
push eax // 保存商
test edx, edx // 判断个位数是否为0
je sub_power
add esp, 4 // 丢掉商
dec dword ptr // n = n - 1
jmp loop_start // 继续循环
sub_power:
pop dword ptr // 余数为0则n为商,n = 商
jmp loop_start // 继续循环
loop_end:
}
printf("%d\n", n);
}
}
{:10_279:}发里福笑的姿势
页:
[1]