xtu oj 数字

news2024/11/13 10:47:09

文章目录

  • 回顾
  • 代码
  • 思路

回顾

  • A+B III
  • 问题 H: 三角数
  • 问题 G: 3个数
  • 等式 数组下标查询,降低时间复杂度
  • 1405 问题 E: 世界杯
  • xtu 数码串
  • xtu oj 神经网络
  • xtu oj 1167 逆序数(大数据)
  • xtu oj 原根
  • xtu oj 不定方程的正整数解
  • xtu oj 最多的可变换字符串
  • xtu oj String I
  • xtu oj 字母序列
  • xtu oj 分段
  • xtu oj 完全平方数II
  • xtu oj 连接字符串
  • xtu oj 2021

代码

#include<stdio.h>
int main(){
   int t;
   scanf("%d",&t);
   while(t--){
   	int n,k;
   	scanf("%d%d",&n,&k);//输入 n 和 k
   	int cnt=0;//存操作的次数
   	int temp=n;//临时变量存 n ,其实直接用 n 也行
   	while(1){
   		if(temp<k){//满足条件就跳出循环,严格小于
   			break;
   		}
   		if(temp%10==0){//尾数是 0,操作次数只需要一次,可以把全部的零去掉
   			cnt++;
   			while(temp%10==0){
   				temp/=10;
   			}
   		}else{//尾数不是 0
   			for(int i=1;i<=9;i++){//枚举个位数
   				if((temp-i*k)%10==0&&i*k<=temp){//这里的限制条件需要注意一下
   					temp-=i*k;
   					cnt+=i;
   					break;
   				}
   			}
   			if((temp>=k)&&(temp%10!=0)){//整除降低时间复杂度
   				int hhh=temp/k;
   				cnt+=hhh;
   				temp-=hhh*k;
   			}
   		}
   	}
   	printf("%d %d\n",cnt,temp);
   }
   return 0;
}

思路

复习 SOA 复习不下去了,写一写算法题。首先写了一个超时的代码

#include<stdio.h>
int main(){
   int t;
   scanf("%d",&t);
   while(t--){
   	int n,k;
   	scanf("%d%d",&n,&k);//输入 n 和 k
   	int cnt=0;//存操作的次数
   	int temp=n;//临时变量存 n ,其实直接用 n 也行
   	int i=0;
   	while(1){
   		if(temp%10==0){//尾数是 0
   			cnt++;
   			while(temp%10==0){
   				temp/=10;
   			}
   		}else{//尾数不是 0
   			while((temp-k*i)%10!=0&&temp>=k){
   				i++;//应该就是这里超时了,因为 n 是 10^9 ,能接受的时间复杂度是 10^8 ,所以应该要优化一下
   			}
   			cnt+=i;
   			temp-=k*i;
   		}
   		if(temp<k){
   			break;
   		}
   	}
   	printf("%d %d\n",cnt,temp);
   }
   return 0;
}

比较直观,没想到直接就超时了。难道是看 n 能不能整除 k 吗,感觉优化的话,就是用除法这种去代替原来超时代码里面的 i++i++ 估计有差不多 10^9 的时间复杂度。我们经过多少次操作可以使得 n 可以被 10 整除,比如说 n 是一个很大的数字,999999999999 ,假设 k 是一个质数 7 ,会不会经过很多次减法,还是不能让 n 可以整除 10 ,那假设我们直接用除法,那时间复杂度可以降到 O(1) 这样子,n/k 但是无法保证这就是正解,比如说 n=333,k=3 ,直接就是 n/k==111 ,但是这个不是正解。正解是 5 次。

这个题放在贪心这个章节。应该是要一边维护 n ,一边判断,关键就是这个判断的标准是什么。我感觉是先看能不能整除,能整除的话就把 n 减小一些,然后看n 能不能整除 10 ,我试一试。这样子好像运行程序的时候直接卡住了。

不会写了,搜到了一篇题解,XTUOJ杂题烩。还得是题解的思路比较好。

不过为啥我按照这个思路写,只有 33 分呢。发现自己主要是没想到枚举个位数这一步,想到了整除降低时间复杂度。之前看网课,里面说其实思路大家都差不多,就整体的思路,就比如说一开始直接模拟就超时这种思路,比较直观的,然后一些细节才真正决定能不能过掉这题。或者拿尽可能高一点的分数,不过 c 语言考试没有 33 分这种,是 acm 模式,某个题要么 100 ,要么 0 。看了题解的代码,感觉差不多。奇怪了。有没有读者知道问题出在哪里。

#include<stdio.h>
int main(){
	int t;
	scanf("%d",&t);
	while(t--){
		int n,k;
		scanf("%d%d",&n,&k);//输入 n 和 k
		int cnt=0;//存操作的次数
		int temp=n;//临时变量存 n ,其实直接用 n 也行
		while(1){
			if(temp%10==0){//尾数是 0
				cnt++;
				while(temp%10==0){
					temp/=10;
				}
			}else{//尾数不是 0
				for(int i=1;i<=9;i++){//枚举个位数
					if((temp-i*k)%10==0){
						temp-=i*k;
						cnt+=i;
						break;
					}
				}
				if(temp>=k&&temp%10!=0){//整除降低时间复杂度
					int hhh=temp/k;
					cnt+=hhh;
					temp-=hhh*k;
				}
			}
			if(temp<k){
				break;
			}
		}
		printf("%d %d\n",cnt,temp);
	}
	return 0;
}

交了一下题解的做法,能过,为啥我这个就过不了呢。那能过 33 的数据点又是什么意思呢,这里也不存在超出数据范围的情况。不行,我一定要把这个搞清楚。

嗷嗷我知道了。循环里面的限制条件没有限制严格,可能会出现负数的情况,之前的博客也有讲过,就是计算机负数进行取余运算的时候和我们理解的数学上的不太一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2237434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux【基础篇】

-- 原生罪 linux的入门安装学习 什么是操作系统&#xff1f; 用户通过操作系统和计算机硬件联系使用。桥梁~ 什么是Linux&#xff1f; 他是一套开放源代码&#xff08;在互联网上找到Linux系统的源代码&#xff0c;C语言写出的软件&#xff09;&#xff0c;可以自由 传播&…

C++类(5)

1.<<和>>操作符重载 我们该如何重载操作符<<和>>呢&#xff1f; 如果在类里面&#xff0c; void operator<<(ostream& out) {out << _year << "年" << _month << "月" << _day <&l…

【MM-Align】学习基于输运的最优对齐动力学,快速准确地推断缺失模态序列

代码地址 - > github传送 abstract 现有的多模态任务主要针对完整的输入模态设置&#xff0c;即每个模态在训练集和测试集中要么是完整的&#xff0c;要么是完全缺失的。然而&#xff0c;随机缺失的情况仍然没有得到充分的研究。在本文中&#xff0c;我们提出了一种新的方…

高精度算法-保姆级讲解

目录 1.什么是高精度算法 2.高精度加法 3.高精度减法 4.高精度乘法 5.高精度除法 &#xff08;高精度除以低精度&#xff09; 6.高精度阶乘&#xff08;n个低精度数相乘&#xff09; 1.什么是高精度算法 高精度算法&#xff08;High Accuracy Algorithm&#xff09;是…

vue大疆建图航拍功能实现

介绍 无人机在规划一块区域的时候&#xff0c;我们需要手动的给予一些参数来影响无人机飞行&#xff0c;对于一块地表&#xff0c;无人机每隔N秒在空中间隔的拍照地表的一块区域&#xff0c;在整个任务执行结束后&#xff0c;拍到的所有区域照片能够完整的表达出一块地表&…

learnopencv系列三:GrabCut和DeepLabv3分割模型在文档扫描应用中的实现

文章目录 一、使用OpenCV实现自动文档扫描1.1 图片预处理1.2 查找轮廓1.3 检测角点1.4 仿射变换1.5 Streamlit Web App1.5.1 设置扫描函数和图像下载链接函数1.5.2 streamlit app1.5.3 测试结果 二&#xff1a;DeepLabv3文档分割2.1 项目背景2.2 合成数据集2.2.1 图像收集与预处…

SQLite的BLOB数据类型与C++二进制存储学习记录

一、BLOB数据类型简介 Blob&#xff08;Binary Large Object&#xff09;是一种用于存储二进制数据的数据类型&#xff0c;在数据库中常用于存储图片、音频和视频等大型&#xff08;大数据量&#xff09;的二进制数据[1-2]。需要注意的是&#xff0c;SQLite中BLOB类型的单对象最…

C# 自己编写web服务

文件后缀响应 "text/html"; 文件后缀响应 "application/json"; httpListenerContext.Response.ContentType 文件后缀响应; httpListenerContext.Response.AppendHeader("Access-Control-Allow-Origin", "*"); // L…

微服务day04

网关 网关路由 快速入门 创建新模块&#xff1a;hm-gateway继承hmall父项目。 引入依赖&#xff1a;引入网关依赖和nacos负载均衡的依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"…

Agent框架调研:19种Agent架构对比分析

代理&#xff08;Agent&#xff09;指能自主感知环境并采取行动实现目标的智能体&#xff0c;即AI作为一个人或一个组织的代表&#xff0c;进行某种特定行为和交易&#xff0c;降低一个人或组织的工作复杂程度&#xff0c;减少工作量和沟通成本。 背景 目前&#xff0c;我们在…

ODOO学习笔记(4):Odoo与SAP的主要区别是什么?

Odoo 和 SAP 都是知名的企业资源规划&#xff08;ERP&#xff09;软件&#xff0c;它们之间存在以下一些主要区别&#xff1a; Odoo与SAP的区别 一、功能特点 功能广度 Odoo&#xff1a;提供了一整套全面的业务应用程序&#xff0c;涵盖了销售、采购、库存管理、生产、会计、…

python之正则表达式总结

正则表达式 对于正则表达式的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 我们可以使用正则表达式来定义字符串的匹配模式&#xff0c;即如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与…

【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板

文章目录 一、日志框架介绍1、浅谈与slfj4、log4j、logback的关系2、性能方面3、Slf4j使用方法 二、log4j配置三、log4j2配置1、SpringBoot整合Log4j22、非SpringBoot项目引入的依赖3、log4j2-spring.xml文件&#xff08;Spring项目&#xff09;或log4j2.xml&#xff08;非Spri…

StarUML建模工具安装学习与汉化最新零基础详细教程【一键式下载】(适用于Windows、MacOS系统、Linux系统)

StarUML破解安装下载教程 前言&#xff1a; StarUML破解与汉化安装下载教程&#xff0c;仅供学习研究和交流使用&#xff0c;禁止作为商业用途或其他非法用途&#xff01; 仓库作者&#xff1a;X1a0He&#xff0c;经仓库作者授权使用。 目录 StarUML破解安装下载教程1. 下载…

【网络安全】2.3 安全的网络设计_2.防御深度原则

文章目录 一、网络架构二、网络设备三、网络策略四、处理网络安全事件五、实例学习&#xff1a;安全的网络设计结论 网络设计是网络安全的基础&#xff0c;一个好的网络设计可以有效的防止攻击者的入侵。在本篇文章中&#xff0c;我们将详细介绍如何设计一个安全的网络&#…

IoTDB 与 HBase 对比详解:架构、功能与性能

五大方向&#xff0c;洞悉 IoTDB 与 HBase 的详尽对比&#xff01; 在物联网&#xff08;IoT&#xff09;领域&#xff0c;数据的采集、存储和分析是确保系统高效运行和决策准确的重要环节。随着物联网设备数量的增加和数据量的爆炸式增长&#xff0c;开发者和决策者们需要选择…

如何找到系统中bert-base-uncased默认安装位置

问题&#xff1a; 服务器中无法连接huggingface&#xff0c;故需要自己将模型文件上传 ubuntu 可以按照这个链接下载 Bert下载和使用&#xff08;以bert-base-uncased为例&#xff09; - 会自愈的哈士奇 - 博客园 里面提供了giehub里面的链接 GitHub - google-research/be…

Qt 学习第十六天:文件和事件

一、创建widget对象&#xff08;文件&#xff09; 二、设计ui界面 放一个label标签上去&#xff0c;设置成box就可以显示边框了 三、新建Mylabel类 四、提升ui界面的label标签为Mylabel 五、修改mylabel.h&#xff0c;mylabel.cpp #ifndef MYLABEL_H #define MYLABEL_H#incl…

华为ensp配置bgp(避坑版)

文章目录 前言一、BGP是什么&#xff1f;二、拓扑三、基础配置四、测试五、拓展总结 前言 BGP&#xff08;Border Gateway Protocol&#xff0c;边界网关协议&#xff09;是一种在互联网中使用的路径矢量协议。它主要用于在不同的自治系统&#xff08;AS&#xff09;之间交换路…

QT最新版6.8在线社区版安装教程

访问QT的官网&#xff1a; Qt | Tools for Each Stage of Software Development Lifecycle 点击 Download Try&#xff1a; 点击社区版最新在线安装&#xff1a; 往下翻网页&#xff0c; 点击下载&#xff1a; 开始安装&#xff1a; 使用--mirror进行启动安装程序&#xff1…