UVa 1363 (数论 数列求和) Joseph's Problem
题意:
给出n, k,求
分析:
假设,则k mod (i+1) = k - (i+1)*p = k - i*p - p = k mod i - p
则对于某个区间,i∈[l, r],k/i的整数部分p相同,则其余数成等差数列,公差为-p
然后我想到了做莫比乌斯反演时候有个分块加速,在区间[i, n / (n / i)],n/i的整数部分相同,于是有了这份代码。
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL; int main()
{
LL n, k;
while(scanf("%lld%lld", &n, &k) == )
{
LL ans = ;
LL i, j, r = min(n, k);
for(i = ; i <= r; i = j + )
{
j = k / (k / i);
if(j > r) j = r; LL d = -k / i;
LL l = j - i + ;
LL a1 = k % i;
ans += (LL) (a1*l + l*(l-)/*d);
}
if(n > k)
ans += (LL) (n-k) * k; printf("%lld\n", ans);
} return ;
}
代码君
后来试了一下lrj的代码,比我的短还比我的快,给跪了
// UVa1363 Joseph's Problem
// Rujia Liu
#include<iostream>
#include<algorithm>
using namespace std; // 首项为a,公差为-d,除了首项之外还有n项
// 末项为a-n*d,平均数为(2*a-n*d)/2
long long sum(int a, int d, int n) {
return (long long)(*a-n*d)*(n+)/;
} int main() {
int n, k;
while(cin >> n >> k) {
int i = ;
long long ans = ;
while(i <= n) {
int q = k % i, p = k / i;
int cnt = n - i; // 最多还有n - i项
if(p > ) cnt = min(cnt, q / p);
ans += sum(q, p, cnt);
i += cnt + ;
}
cout << ans << "\n";
}
return ;
}
更快的代码君
UVa 1363 (数论 数列求和) Joseph's Problem的更多相关文章
- UVA 1363 Joseph's Problem 找规律+推导 给定n,k;求k%[1,n]的和。
/** 题目:Joseph's Problem 链接:https://vjudge.net/problem/UVA-1363 题意:给定n,k;求k%[1,n]的和. 思路: 没想出来,看了lrj的想 ...
- C语言程序设计100例之(23):数列求和
例23 数列求和 问题描述 已知某数列前两项为2和3,其后继项根据前面最后两项的乘积,按下列规则生成: ① 若乘积为一位数,则该乘积即为数列的后继项: ② 若乘积为二位数,则该乘积的十位上的数字和个 ...
- 李洪强漫谈iOS开发[C语言-047]-数列求和
// // main.c // 53 - 数列求和 - 李洪强 // // Created by vic fan on 16/10/15. // Copyright © 2016年 李洪强. ...
- 40. 特殊a串数列求和
特殊a串数列求和 #include <stdio.h> int main() { int i, a, n, item, sum, temp; while (scanf("%d % ...
- GMA Round 1 数列求和(Hard)
传送门 数列求和(Hard) 在数列{$a_n$}中,$a_1=-\frac{1}{4}$,$\frac{1}{a_{n+1}}+\frac{1}{a_n}=\begin{cases}-3(n为偶数) ...
- 数列求和 Exercise06_13
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:数列求和 * */ public class Exercise06_13 { public static void main( ...
- 解题报告:luogu P5745 【深基附B例】数列求和
题目链接:P5745 [深基附B例]数列求和 现在想说:\(O(N)\)的题要不怎么也想不出来,要不灵光乍现,就像这道题. 我们维护一个类似单调队列的加法单调队列: 若相加大于此数,就将队尾元素弹出, ...
- luogu P4948 数列求和 推式子 简单数学推导 二项式 拉格朗日插值
LINK:数列求和 每次遇到这种题目都不太会写.但是做法很简单. 终有一天我会成功的. 考虑类似等比数列求和的东西 帽子戏法一下. 设\(f(k)=\sum_{i=1}^ni^ka^i\) 考虑\(a ...
- UVa 1363 - Joseph's Problem(数论)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
随机推荐
- 《HTML5 CANVAS基础教程》读书笔记
一.HTML5简介 1.HTML5新特性 1)结构元素:section,header,hgroup,footer,nav,article,aside, 2)内容元素:figure,figcaption ...
- poj 3415 Common Substrings 后缀数组+单调栈
题目链接 题意:求解两个字符串长度 大于等于k的所有相同子串对有多少个,子串可以相同,只要位置不同即可:两个字符串的长度不超过1e5; 如 s1 = "xx" 和 s2 = &qu ...
- Linux下Mysql数据库备份
今天一同事的电脑无缘无故坏了,找了IT部门检测说是硬盘坏了,数据无法恢复.好悲剧.自己博客也写了好久不容易,要是突然间数据丢了那怎么办!于是写了个数据库自动备份脚本,并创建任务计划,实现每天22:30 ...
- JS禁用浏览器退格键
我们在真实的项目开发中经常会使用JS 对键盘上的一些按键进行禁用,常见的比如说退格键(backspace/ 后退键),我在一个项目中就遇到过在页面编辑的时候禁用掉退格键,因为退格键会发生页面后退,代码 ...
- CLR.via.C#第三版 读书笔记
第一章 CLR的执行模型 1.1将源代码编译成托管代码 决定将.NET Framework作为自己的开发平台之后,第一步是决定要生成什么类型的应用程序或组件.假定你已经完成了这些次要的细节:一切都已经 ...
- OC 数据类型之间的转换方法
NSNumber转NSString: 假设现有一NSNumber的变量A,要转换成NSString类型的B 方法如下: NSNumberFormatter* numberFormatter = [ ...
- 高动态范围光照(High Dynamic Range Imaging,简称HDRI或HDR)
1 HDR基本概念 高动态范围光照(High Dynamic Range Imaging,简称HDRI或HDR),是一种表达超过了显示器所能表现的亮度范围的图像映射技术,已成为目前游戏应用不可或缺的 ...
- poj 2553 The Bottom of a Graph(强连通分量+缩点)
题目地址:http://poj.org/problem?id=2553 The Bottom of a Graph Time Limit: 3000MS Memory Limit: 65536K ...
- 使用Yeoman搭建 AngularJS 应用 (7) —— 让我们搭建一个网页应用
原文地址:http://yeoman.io/codelab/preview-inbrowser.html 开启你的服务 运行Grunt任务,通过输入下面的命令来创建一个本地Node的http服务,地址 ...
- 为什么要在<button>元素中添加type属性
在HTML中<button> 标签定义一个按钮. <button type="button">Click Me!</button> 在 butt ...