博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 1363---数论思维题
阅读量:5979 次
发布时间:2019-06-20

本文共 1054 字,大约阅读时间需要 3 分钟。

题目链接

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

题目思路:直接暴力for循环求解必然超时,所以我们需要找找规律~~~

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

我们发现k%i=a,k/i=b;   余数a是呈等差数列的;   公比是b,首项是a,项数是(a+b-1)/b;

举个例子:k=13,n=16;

13%1=0,   

13%2=1....6 

13%3=1....4   

13%4=1.... 3

13%5=3....2     13%6=1....2  

13%7=6....1     13%8=5....1    13%9=4....1     13%10=3....1       13%11=2....1       13%12=1...1       13%13=0....1  

13%14=13...0     13%15=13....0     13%16=13....0

开始上代码:

#include
#include
using namespace std;long long solve(long long a,long long b,long long cnt){ return (long long)((cnt+1)*(2*a-cnt*b)/2);}int main(){ int n,k; long long a,b; while(~scanf("%d%d",&n,&k)) { long long ans=0,i=1; while(i<=n) { a=k%i; b=k/i; long long cnt=n-i;//剩余项数 if(b>0) cnt=min(cnt,a/b);//保证项数的正确性 ans+=solve(a,b,cnt);//cnt项的等差数列和 i=i+cnt+1; } cout<
<

感悟:好烦这种题,细节好容易错啊。。。心累,多一少一都是wa

 

转载于:https://www.cnblogs.com/Aiahtwo/p/10911451.html

你可能感兴趣的文章
iOS 离屏渲染
查看>>
OpenCV 离散傅里叶变换
查看>>
小程序多图上传
查看>>
(入门)使用webpack 4.x定制自己的react开发环境
查看>>
笔记3 es6,7,正则
查看>>
CSS结构原理(二)——伪类、伪元素与样式特性
查看>>
Flutter 系列文章:Flutter SliverAppbar 控件介绍
查看>>
vuepress搭建技术文档实战(带github项目地址)
查看>>
第一个React项目总结
查看>>
我用两种方式写的省市区判断转换
查看>>
没有学不会的C++:显示类型转换(Casting)
查看>>
你需要知道的几类npm依赖包管理
查看>>
Http状态码整理
查看>>
会员向上,广告向下:爱奇艺权衡之道不轻松
查看>>
数据请求+
查看>>
在线短地址转换聚合工具-toolfk程序员在线工具网
查看>>
springboot整合mybatis即使用 **mapper.xml 02
查看>>
那些年,我们一起踩过的坑(前端防翻车指南)
查看>>
iOS获取当前显示的试图控制器
查看>>
(三)Spring Cloud架构的代码结构
查看>>