1007、1009:与进制问题、输出问题

news/2025/1/8 20:22:58/

1007

题目:本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立

思路:对于数字元素拆分,除法的计算方法用代码实现(唯一一点就是在输出的时候首元素按照输出的格式是不能有0的情况存在)

以下是我初次通过本地测试成功的代码,但是在上传到牛客的时候出现,实际结果没有输出q数组,我就很奇怪,我使用了相同测试用例到本地没有问题,但是在网上就是通过不了。

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;int main() {string str;int n,len;freopen("i.txt","r",stdin);char q[1001];cin>>str>>n;int mode=0;for(int i=0; i<str.length(); i++) {mode=mode*10+((int)str[i]-'0');q[i]=(char)mode/n+'0';mode%=n;len++;}for(int i=0; i<len; i++) {if(i==0&&q[i]=='0') {continue;}printf("%c",q[i]);}printf(" %d",mode);return 0;
}

参考代码:

#include<iostream>
#include<string>
using namespace std;
int main(){string a;int b;cin>>a>>b;int yu = a[0] - '0';for(int i = 1;i<a.size();i++){int tem = yu*10+ (a[i] - '0');cout<<tem/b;//输出结果yu = tem %b;}cout<<" "<<yu;//输出结果return 0;
}

然后就学会了:以后在获取到结果的时候,能通过使用for循环输出结果。这样就又省了一次for循环,减少代码运行的时间

改进代码:(以下代码就能顺利通过测试用例)

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;int main() {string str;int n,len;// freopen("i.txt","r",stdin);char q[1001];cin>>str>>n;int mode=0;for(int i=0; i<str.length(); i++) {mode=mode*10+((int)str[i]-'0');q[i]=(char)mode/n+'0';mode%=n;if(i==0&&q[i]=='0') {continue;}printf("%c",q[i]);}printf(" %d",mode);return 0;
}

总结

1.使用for循环顺手输出结果

2.字符转数字是使用了字符数字与字符数字‘0’的差值获取了整型数字

3.使用取余数的方式可以获取一串数字里面的元素。

1009

简单,但是麻烦

题目:

给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174... ...现给定任意4位正整数,请编写程序演示到达黑洞的过程。

#include<iostream>
#include<cstdio>
#include<algorithm>using namespace std;
bool cmp(int a,int b) {return a>b;
}int main() {// freopen("in.txt","r",stdin);int num;cin>>num;do{int n[4];for(int i=3; i>=0; i--) {n[i]=num%10;num=num/10;}sort(n,n+4,cmp);printf("%d%d%d%d - %d%d%d%d = ",n[0],n[1],n[2],n[3],n[3],n[2],n[1],n[0]);num=(n[0]*1000+n[1]*100+n[2]*10+n[3])-(n[3]*1000+n[2]*100+n[1]*10+n[0]);printf("%d\n",num);	}while(num!=6174);return 0;
}

总结

尽量观察输出结果与获取的输入之间的连接,能少写代码就少写


http://www.ppmy.cn/news/47904.html

相关文章

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章&#xff1a;公网远…

禁用表单元素:Layui框架下的实践与技巧

引言 在日常的网页开发过程中&#xff0c;有时我们需要禁用表单元素&#xff0c;以防止用户在某些情况下进行输入或更改。在本文中&#xff0c;我们将介绍如何在Layui框架下使用JavaScript禁用表单元素&#xff0c;例如单选按钮&#xff08;radio&#xff09;、下拉列表&#…

Go的ORM框架XORM实现增删改查

XORM XORM 是一个简单而强大的 Go 语言 ORM 框架。官网XORM 更多细节请移步官网&#xff0c;本篇文章主要阐述快速入门&#xff0c;快速实现增删改查的&#xff08;curd的操作来熟悉xorm。 xorm优势&#xff1a; 支持struct和数据库表的灵活映射&#xff0c;并自动同步支持…

超详细的ubuntu安装opencv2.0//test ok

目录 1. 首先确保在Ubuntu上已经安装了cmake和make 1.1 安装make 1.2 安装cmake 2 安装依赖环境 3 下载opencv源码 4 编译源码并安装 4.1 进入opencv源码目录中&#xff0c;新建build文件夹 4.2 进入build文件夹&#xff0c;打开终端使用cmake生成makefile 4.3 安装ope…

15.网络爬虫—selenium验证码破解

网络爬虫—selenium验证码破解 一selenium验证码破解二破解平台打码平台超级鹰文识别基于人工智能的定制化识别平台 —图灵 三英文数字验证码破解selenium破解验证码快捷登录古诗文网 四滑动验证码破解selenium滑动验证码破解网易网盾测试案例 五总结六后记 前言&#xff1a; &…

​影响广告收益的关键因素及其优化方法

​摘要&#xff1a;广告收益是许多企业、网站和应用程序达到一定阶段后&#xff0c;不得不重视的收入来源。然而&#xff0c;广告收益的影响因素却是多种多样的&#xff0c;包括广告受众群体、广告位、广告类型以及广告预算的波动等等。 针对这些影响因素&#xff0c;企业和个人…

Day948.组件化成熟度评估,你的目的地在哪里呢 -系统重构实战

组件化成熟度评估&#xff0c;你的目的地在哪里呢 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于组件化成熟度评估&#xff0c;你的目的地在哪里呢的内容。 一、组件化成熟度模型 组件化成熟度模型可以帮助咱全局去思考当前的现状&#xff0c;并制定更有针对性的…

运算符重载(二):重载赋值

重载赋值运算符 在一个类里面&#xff0c;编译器默认给我们添加了一个赋值运算符的重载&#xff0c;这样我们就能给两个对象之间进行赋值运算 class Role { public:int hp;int mp; } int main() {Role x,y;x.hp100;x.mp200;yx;std::cout<<y.hp<<y.mp; } 像这样&…