Uva1363(余数性质/减少枚举量)

题意:

输入正整数n和k(范围均为1e9),求∑(k mod i),i从1~n

解法:

首先这道题直接暴力亲测会超时。

之后我们写几组数据之后可以发现当k/i的商相同的时候他们的余数成一个等差数列,而且数列首相是q,公差是p,项的个数是余数/商。

具体写法网上面有分情况讨论的,但是较为繁琐,这里LRJ的板子感觉写法就很精炼。

我们从左到右依次枚举每一项i(核心思想是减少i的枚举个数),计算出k除以这个数的商和余数, 如果这个商是0,说明此时的i已经大于k;如果不为0(即大于0),即来计算等差的数列的值。

如果k%i==0,则项的个数为0,计算和之后为0,其他情况就很正常了。

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 typedef long long ll;
 5 ll series_sum(int p, int d, int n) { return (ll)(2 * p - n*d)*(n + 1) / 2; }
 6 int main() {
 7     int n, k;
 8     while (scanf("%d%d", &n, &k) != EOF) {
 9         ll ans = 0, i = 1;
10         while (i <= n) {
11             int p = k / i, q = k%i;
12             int cnt = n - i;
13             if (p > 0)cnt = min(cnt, q / p);//计算项的个数,避免超出n的范围
14             ans += series_sum(q, p, cnt);
15             i += cnt + 1;
16         }
17         printf("%lld\n", ans);
18     }
19     return 0;
20 }

原文地址:https://www.cnblogs.com/romaLzhih/p/9515216.html

时间: 2024-10-29 04:15:36

Uva1363(余数性质/减少枚举量)的相关文章

UVA - 11526 - H(n)(思路,减少枚举量)

题意:给定在32位带符号整数范围内的n,求n/1+n/2+n/3+n/4+--+n/n = ? 因为损失精度,所以算出来的有些连续的项是相同的数值,故想办法找出对于某个值,哪一段范围均是这个值. 详见代码注释 #include<cstdio> #include<cstring> #include<cctype> #include<cstdlib> #include<cmath> #include<iostream> #include&

SSH---Spring减少配置量将公共的配置进行抽象

SSH---Spring减少配置量将公共的配置进行抽象 最近做项目的过程中遇到一个关于Spring配置特别基础的问题--减少配置量将公共的配置进行抽象.为此特地翻看以前看过的视频刚好有类似的Demo,所以就借用一下分享给大家. 抽象前 配置文件大致如下(只将可以抽象的地方贴出来): <bean id="bean2" class="com.tgb.spring.Bean2"> <property name="id"value=&q

前端程序员的蜕变——JS的 event 对象属性、使用实例、兼容性处理(极大提高代码效率、减少代码量)

下面讨论一下 js 中的 Event 对象,主要从以下三个方面详细的描述(点击标题可跳转到对应部分): 1.什么是event 2.怎么用event,用他该注意什么,几个简单实际应用 3.event在不同浏览器的存在的兼容问题,及如何去解决  1.  什么是event Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态等等.说的通俗一点就是,event是JS的一个系统内置对象.平时无法使用,当DOM元素发生按键.鼠标等等各种事件时,系统会自动根据D

用enum枚举量做下标初始化数组

一下copy自:http://bbs.csdn.net/topics/90234659 ------------------------------------------------------------------------------------------------------------------- “两则C语言技巧”http://tb.blog.csdn.net/TrackBack.aspx?PostId=1120124第一个技巧在我的环境下不能通过,是我的原因吗.引用:1.

thttpd增加gzip压缩响应报文体功能,以减少传输数据量

thttpd thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Zeus等)的对比图+Benchmark,可以参考参考.此外,thttpd 也类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现.因此效能很好. thttpd 支持多种平台,如FreeBSD, SunOS, Solaris, BSD

通过Pojo对象 field 属性加注解实现格式校验,极大的减少代码量

最近做一个接口,接受外系统的报文,通过XStream转换成java对象以后,需要对其中的字段做格式校验.要求如下 传统的方式是硬编码校验,但是对于field很多的情况,代码量暴增.容易出错. String storeCode = uHeader.getStoreCode(); if (StringUtils.isNotBlank(storeCode)) { ParamsUtil.getInstance().checkStrParam(result, storeCode, "抬头-参考订单门店号[

一些减少代码量、提高开发效率的利器(Java)

Spring Boot mybatis-plus代码生成器和自带CRUD接口 lombok 库: Apache Commons & guava AOP Java8: stream & lambda 反射 日志取代debug IDEA:使用恰当的开发工具并熟悉.熟练使用其功能 单元测试:不必运行整个项目,减少项目运行时间(好处之一) JRebel(热部署工具) 原文地址:https://www.cnblogs.com/thinkam/p/10350424.html

新兵易学,老兵易用----C++(C++11的学习整理---如何减少代码量,加强代码的可读性)

1.auto类型推导 auto推导最大的优势就是在拥有初始化表达式的复杂类型变量声明时简化代码. auto第二个优势就是免去了程序员在一些类型声明时的麻烦,或者避免一些在类型声明时的错误. auto第三个优势就是其“自适应”性能能够在一定程度上支持泛型的编程. auto的四个使用细则: 1)函数:不能是形参 2)结构体:不能是静态类型 3)数组:不能声明数组 4)模板实例化:不能作为模板参数 2.decltype推导细则 1)如果e是一个没有带括号的表姐符表达式或者类成员访问表达式,那么decl

Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!

一.序 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整解决方案,设计师只需要使用 After Effectes (之后简称 AE)设计出动画之后,使用 Lottic 提供的 Bodymovin 插件将设计好的动画导出成 JSON 格式,就可以直接运用在 iOS.Android 和 React Native之上,无需关心中间的实现细节. 这样,对于不同的工作角色来说,Lottie 带来的都是更简洁的工作流.开发小哥哥不再担心动画实现困难,设计师小姐姐也不需要担