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

1024.5不是数位和--------题解

前言

gogogo,完成这个题目的整理,咱们将要开始整理运行超时问题和数组越界问题的解决方案,然后再背60个单词,看一节提醒课程。

题目

解法

#include<bits/stdc++.h>
using namespace std;
int main(){
//     string m;char m[1000000001];long long int sum = 0;
//     cin>>m;scanf("%1000000000s",m);long long int size = strlen(m);
//     long long int size = m.size();for(int i=size-1;i>=0;i--){
//        sum+=(m[i]-97)*pow(13,size-1-i);//这个只能过50%sum+=(m[i]-'a');//这个可以过100%}if(sum!=0&&sum%3==0){cout<<1<<' ';}else{cout<<0<<' ';}if(sum!=0&&sum%4==0){cout<<1<<' ';}else{cout<<0<<' ';}return 0;
}

这里我的思路就是通过通过判断数位和是否能被3或者4整除来判断这个数能否被3或者4整除。

反思

 1.考察知识点:数学知识,字符串的输入输出;

 2.踩的坑:

2.1.首先是pow这个函数,没有记清楚;

2.2.其次是在这个pow这个内构函数,要求里面的变量类型必须是一致的,我一开始用的是int类型的13和long long int 类型的size-1-i,如果数据量小的话还是可以正常通过的,但是数据量大了就算不了了;

2.3.再其次就是关于这个字符串输入的问题了,一开始我用string和cin进行输入,最终导致有一半的样例错误以及运行超时,后来借鉴他人的题解改成了char数组和scanf,就没有再出现这种情况了,经过查阅资料我知道了,string的输入效率低于char数组(尤其是处理超大规模字符串时),另外scanf是直接操作内存的底层输入,而cin是会做同步缓冲区加格式校验,每次输入都会经过多层判断,所以遇到大规模字符处理时,尽可能采用char数组和scanf,或者用这些语句(明天再来整理):

#include<bits/stdc++.h>
using namespace std;
int main(){string m;m.reserve(1000000001); // 提前分配内存,避免动态扩容耗时ios::sync_with_stdio(false); // 关闭cin与stdio的同步,大幅提升速度cin.tie(nullptr); // 解绑cin和cout,进一步提速cin >> m; // 此时string输入速度≈scanflong long sum = 0;for(int i = m.size()-1; i >=0; --i){sum += (m[i] - 'a');}// 后续判断输出不变...return 0;
}

2.4.还有就是strlen函数和.size()关键字的区别,前者是C语言风格的函数,仅能用来处理char数组,而后者呢,是C++风格的,仅能用来处理string类型的字符串。

2.5最后就是关于这个数组的长度和scanf里面为什么都有这么多的‘0’,这里经过查阅资料得知,是为了防止scanf继续输入而使数据超过数组的范围使程序崩溃,具体为啥是10的9次方这个不得而知。

3.可以优化的地方:

根据踩坑的地方,首先将输入语句改成scanf和char数组;

其次,计算字符串长度也配套改成strlen.

然后数组和输入长度很重要,这个要问一下。

http://www.dtcms.com/a/557353.html

相关文章:

  • 加强门户网站建设的通知博客和网站的区别
  • 阿里云网站建站网站建设的公司这个
  • 基于AWS多区域部署的高可用性与灾难恢复架构设计
  • 海外注册域名的网站好石家庄专业网站营销
  • HTML CSS八股
  • 免费网页源代码网站个人微信营销
  • 【项目实战1 -瑞吉外卖|day23 】
  • QuickLook:文件预览
  • 使用QKeyEvent keyPress(QEvent::KeyPress, key模拟键盘发送事件,会导致主程序卡死
  • 512-Spring AI Alibaba 字段分类分级 Graph 示例
  • 网站开发培训中心wordpress怎么建页面
  • 朝阳做网站哪家公司好推广广告投放
  • 我是程序员吗?
  • 在线excel数据导入导出框架
  • 手撕vector:从零实现一个C++动态数组
  • 2025年--Lc228-523. 连续的子数组和(带测试用例)-Java版
  • 统计学---2.描述性统计-参数估计
  • 辽宁城乡和住房建设部网站怎么做个网站
  • 太平洋建设集团网站网站登录失败怎么回事
  • 住宅小区物业管理系统网站建设开票 网站建设
  • 模块互相依赖问题解决的一个记录
  • 使用mujoco加载模型和控制、以及训练(一)
  • (125页PPT)麦肯锡业务流程规划方法论及流程规划案例(附下载方式)
  • AI学习研究——KIMI对佛教四圣谛深度研究
  • CSS padding(填充)
  • 通信原理(008)——模拟通信和数字通信
  • 山东城建设计院网站公司网站的重要性
  • C#快入教程:Linux安装.NET
  • 《深入浅出统计学》学习笔记(二)
  • 【内存管理】深入理解内存映射(Memory Mapping)与mmap:实现高效零拷贝的DMA缓冲区共享