16 - 12 - 10 超时(Exceeding Time)问题 优化

2024-01-17 01:32

本文主要是介绍16 - 12 - 10 超时(Exceeding Time)问题 优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、
Description
Kim刚刚学会C语言中的取模运算(mod)。他想要研究一下一个数字A模上一系列数后的结果是多少。帮他写个程序验证一下。
Input
第一行一个整数T代表数据组数。
接下来T组数据,第一行一个整数n,接下来n个数字ai
接下来一行一个整数m,接下来m个数字bi
Output
对于每个bi,输出bi%a1%a2%…%an
Sample
Input
1
4
10 9 5 7
5
14 8 27 11 25 4

Output
3
2
1
0

Hint
在C语言中,A mod B 是 a%b
样例解释:
14%10%9%5%7=4
8%10%9%5%7=3
数据范围:
1<=n<=100000
1<=m<=100000
1<=ai<=1000000000
0<=bi<=1000000000

↓ 普通方法不超时才怪。

<<<<<< 超 时 代 码 >>>>>>

/*<<<<<< **超 时 代 码** >>>>>>*/#include<stdio.h>
#include<stdlib.h>
#include<cstring>
int main(){int T,i,n,m,j = 0;long a[100000],b[100000];scanf("%d",&T);while(T--){scanf("%d",&n);for(i = 0;i<n;i++){scanf("%d",&a[i]);}scanf("%d",&m);for(i = 0;i<m;i++){scanf("%d",&b[i]);}for(j = 0;j<m;j++){for(i = 0;i<n;i++){b[j] = b[j]%a[i];}printf("%d\n",b[j]);}memset(a,0,sizeof(a));memset(b,0,sizeof(b));n = 0;m = 0;}return 0;
}

<<<<<<正确代码>>>>>>

//<<<<<< **正 确 代 码** >>>>>>/*题解(来自哈理工官方网站):中等题 。  注意到不断取模下去会越来越小,而且一个数模 a 之后再模b,如果 a 比 b 小那么模 b 就没有意义了。所以对输入的 a 数组剔除所有没用的数,剩下一个递减的数组。在这个数组上,每次二分找到距离当前x最接近且大于x的数,模上这个数重复这一过程即可。这个过程不会重复很多次。很快这个数就会小于所有的a,这时就获得了答案。*/#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#define left lll
#define right rrr#define FOR(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
int a[200000+233];
int n,m;
long long  last,left,right,mid,q;
int main (int argc, char *argv[])
{int T;scanf("%d",&T);while (T--){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);last=1;                            //?for(int i=2;i<=n;i++){if ( a[i] < a[last] ){last++;a[last]=a[i];}}n=last;scanf("%d",&m);for(i=1;i<=m;i++){   scanf("%lld",&q);while (1){        //是 1 不是 lleft=0;right=n+1;while ( right - left > 1 ){mid=(right+left)/2 ;if ( a[mid] <= q ){right = mid;}else left = mid;}if (right==n+1) break;q=q%a[right];}printf("%lld\n",q);}}return 0;
}

这篇关于16 - 12 - 10 超时(Exceeding Time)问题 优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614522

相关文章

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对