首页 > TAG信息列表 > CQOI2007
P2261 [CQOI2007]余数求和
P2261 [CQOI2007]余数求和 分析 求的式子为\(ans = \sum_{i=1}^{n} k\%i\),我们首先需要知道的是\(a\%b=a-b*\left \lfloor \frac{a}{b} \right \rfloor\),则式子就变成了。 \[ans = n*k -\sum_{i=1}^{n}i*\left \lfloor \frac{k}{i} \right \rfloor \]然后\(\left \lfloor \frac{k}luogu P2261 [CQOI2007]余数求和 (数论分块)
这题要推一下式子,注意涉及到取模的式子都要尽量展成减去下取整的形式。 注意,这里求和符号是求到n,因此分块里面 l 的范围就是l<=n,然后对于n大于k的情况需要特判一下。 1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 LL n,k; 5 int m[CQOI2007]余数求和(除法分块)
一个性质:n%k=n-k*(n/k);(利用整除的性质) 注意:sigma(i)不需要考虑除法自动向下取整的问题(本身就全都是整数,通项公式本身是绝对正确的,那么在/2之前必然已经是2的倍数了) #include<cstdio> #include<iostream> #define ll long long using namespace std; int main(){ ll n,k[CQOI2007]余数之和SUM (整除分块)
题目链接 emmm其实取模 a%m=a- [a/m]*m 那么该式子可以化简为Σi=1n k- [k/i]i 再化简就是nk减去 若干个分块 ,每个分块是连续的, 因此还要计算该分块有多少次出现的值。emm 就整除分块就行了。 signed main() { ll n,k; read(n); read(k); ll ans=n*k;P4537 [CQOI2007]矩形
巧妙的计数题。 考虑爆搜不与边界重合的分界线,显然,任意一种方案都有其独一无二的分界线,并且任意一条分界线只会在起点和终点处被各搜到一次。 分三种情况讨论(不考虑方向): 左侧或上侧边界至右侧或下侧边界。 左侧边界至上侧边界或右侧边界至下测边界。 起点和终点位于同一边界。[CQOI2007]余数求和
嘟嘟嘟 学完数论分块,觉得这题不难啊。(难道是我变强了?) 推式子就行。 \[\begin{align*} G(n, k) &= \sum_{i = 1} ^ {n} k \ \ mod \ \ i \\ &= \sum_{i = 1} ^ {n} k - \left \lfloor \frac{k}{i} \right \rfloor * i \\ &= n * k - \sum_{i = 1} ^ {n} \left \lfloo洛谷P2261 [CQOI2007]余数求和(数论分块)
题目描述 给出正整数 n和 k,请计算 \(G(n, k) = \Sigma_{i = 1}^{n}k\ mod \ i\) 其中 k mod i表示 k除以 i的余数。 输入格式 输入只有一行两个整数,分别表示 n和 k。 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 #1复制 10 5 输出 #1复制 29 \(k\ mod\ i\)相当P4170 [CQOI2007]涂色
原题链接 考察:区间dp 思路: f[i][j]为涂色[i,j]区间的最少次数,按s[i]与s[j]的关系划分集合,如果s[i]!=s[j],我们枚举断点,f[i][j] = f[i][k]+f[k+1][j].如果s[i]==s[j],答案不是f[i+1][j-1]+1,这个方程不能处理全都相等的情况,应该考虑去掉一边即只涂f[i+1,j]或者f[i[CQOI2007]余数求和
[CQOI2007]余数求和 题目链接 题意简述: 给出n,k求k%1~n每一个数的和 解题思路 1.式子变形 首先将原始式子变形成为nk-(k/1*1+k/2*2...k/n*n),此处的除法都是向下取整,也就是说不可以使用运算律了。 2.区间思想 那么我们通过简化式子,得到了一个不能用运算律的式子。此BZOJ 1257 [CQOI2007]余数之和 数学
都不知道说什么好。。。咕咕到现在。。 求:$\sum_{i=1}^n \space k\space mod \space i$ 即求:$n*k-\sum_{i=1}^n\space \lfloor \frac{k}{i} \rfloor *i$ 我们发现,在一定范围内,$\lfloor \frac{k}{i} \rfloor$是不变的,那么此时相当于求一个等差数列。。。 #include<cstdio>#includBZOJ 1257: [CQOI2007]余数之和 数论专题第十四题
title BZOJ 1257 Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数。 例如j(5, 3)=3 mod 1 + 3 mod 2 + 3 mod 3 + 3 mod 4 + 3 mod 5=0+1+0+3+3=7 Input 输入仅一行,包含两个整数n, k。 1<=n ,k<=10^9p2261 [CQOI2007]余数求和
传送门 分析 https://zzlzk.blog.luogu.org/solution-p2261 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include&l