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& ...
随机推荐
- leetcode学习笔记--开篇
1 LeetCode是什么? LeetCode是一个在线的编程测试平台,国内也有类似的Online Judge平台.程序开发人员可以通过在线刷题,提高对于算法和数据结构的理解能力,夯实自己的编程基础. ...
- flex直接访问服务器
1.读取指定文件里的xml: <?xml version="1.0" encoding="utf-8"?><s:WindowedApplica ...
- Intel Edison的那些事:修改Edison的HTTP服务的页面
Intel Edison配置好之后,按住PWR键2-7秒(4秒恰到好处),就可以进入AP热点模式(此时,Arduino扩展板上的灯不停闪烁),可以将笔记本接入Edison的热点,然后在浏览器中访问“h ...
- OFBIZ bug_ControlServlet.java:233:ERROR
错误日志: [java] 2014-09-26 10:12:17,031 (http-bio-0.0.0.0-8443-exec-5) [ ControlServlet.java:233:ERROR] ...
- POJ 2151 概率DP
主要的子问题是每一个队伍有一个做出题目的概率,求做出k个题目的概率.简单的简单的组合数DP.想清楚即可. 1: #include <iostream> 2: #include <cs ...
- 【BZOJ 1103】 [POI2007]大都市meg
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1..n ...
- c++ 字符串工具类
#include <string> #include "util.h" namespace strtool{ std::string trim(const std::s ...
- 【扩展欧几里得】Bzoj 1407: [Noi2002]Savage
Description Input 第1行为一个整数N(1<=N<=15),即野人的数目.第2行到第N+1每行为三个整数Ci, Pi, Li (1<=Ci,Pi<=100, 0 ...
- bzoj 1228: [SDOI2009]E&D 阿达马矩阵
1228: [SDOI2009]E&D Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 448 Solved: 240[Submit][Sta ...
- Otto Product Classification Winner's Interview: 2nd place, Alexander Guschin ¯\_(ツ)_/¯
Otto Product Classification Winner's Interview: 2nd place, Alexander Guschin ¯\_(ツ)_/¯ The Otto Grou ...