首页 > 其他分享 >abc230E n/i分数求和

abc230E n/i分数求和

时间:2024-03-09 10:55:32浏览次数:25  
标签:分数 求和 long int solve -- define abc230E

题面:给定n,计算 $ \sum_{i=1}^{n}\frac{n}{i} $
范围:1<=n<=1E12

思路:分块,假设区间[l,r]的结果都相同,即n/l=n/r,根据l可以推算出r,那么这个区间对结果的贡献就是区间长度乘以结果,时间复杂度为O(sqrtn)。

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=a; i<=b; i++)
#define per(i,a,b) for(int i=b; i>=a; i--)

int n, ans;
void solve() {
    cin >> n;
    for (int l = 1, r; l <= n; l = r + 1) {
        r = n / (n / l);
        ans += (r-l+1) * (n/l);
    }
    cout << ans << "\n";
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    while (t--) solve();
    return 0;
}

标签:分数,求和,long,int,solve,--,define,abc230E
From: https://www.cnblogs.com/chenfy27/p/18062379

相关文章

  • 每天一道蓝桥杯 Day2 翻转+阶乘求和
    阶乘求和 只要后9位的话,那就只考虑后9位!如何只算后9位?有一个很经典的运算:取模。回想入门c语言时做过一道题,给定三位数,要求进行数字翻转。比如给定n,n=123,要翻转成321。一个做法是令a1=n%10,a2=(n%100)/10,a3=n/100输出a1*100+a2*10+a3即可。所以遇到求一个很大的值除以某数......
  • 解决easyexcel合并单元格数组求和重复问题
    背景EasyExcel(根据条件动态合并单元格的重复数据))_Violet-CSDN博客_easyexcel动态合并单元格现有的订单导出是使用的easyExcel完成的.对于相同单元格的合并是自定义的策略,问题是对于重复单元格的值会合并,表格求和时值会虚高现需要对合并格做修改,做到值只有一个。思路sheet合并......
  • L1-009 N个数求和
    MD...提交过了好几次才通过。第三个测试点:需要使用longlong,要求长整型。干脆就把int全部替换成longlong。第五个测试点:随便试出来的,我输入了21/2-1/2,发现啥都没打印出来。原来是忽略了结果是0的情况,如果整数部分和分子部分都是0,那么就把这个0打印出来,然后加了这部分,第......
  • List集合中的某个元素的求和
    第一种方式intsuma=list.stream().map(e->e.getAge()).reduce(Integer::sum).get();//求和System.out.println(suma);intmaxa=list.stream().map(e->e.getAge()).reduce(Integer::max).get();//最大System.out.println(maxa);intmina=list.stream().map(e->e.g......
  • 0/1分数规划总结
    前言最近在搞什么树套树,博弈论,啥啥啥的,时间实在紧迫,就先拿0/1规划开刀。0/1分数规划是什么实际上是一类问题。顾名思义,0/1即对于\(n\)个物品,选择或者不选择。分数,即对于每个物体,有两个属性\(a_i,b_i\),选出物品的价值就是\(\dfrac{\suma_i\timesd_i}{\sumb_i\tim......
  • P1874 快速求和 题解
    updon2023/12/22:修改了代码,现已通过所有hack数据。首先定义状态:令\(dp_{i,j}\)表示前\(i\)个数字要变成\(j\)所需要的最少加号个数。同时,我们还需要一个辅助数组:令\(num_{i,j}\)表示\(i\simj\)的数字组成的数(不添加加号)。然后进行转移。显然可以枚举......
  • Vuex系列之(五)求和案例
    求和案例//index.jsimportVuefrom'vue'importVuexfrom'vuex'Vue.use(Vuex)constactions={ //对于不包含业务逻辑也不进行Ajax请求转发的操作可以不经过actions,直接调用mutations中的方法即可 //jia(context,value){ // console.log('actions被调用了',conte......
  • 杜教筛——亚线性处理数论函数求和
    问题引入给定一个数论函数\(f(x)\),求\(\sum\limits_{i=1}^nf(i)\)。对\(n\le10^7\)甚至\(n\le10^8\)都是好做的,\(\mathcalO(n)\)解决即可,但如果\(n<2^{31}\)呢?这就需要亚线性时间复杂度的算法,杜教筛就是其一。杜教筛杜教筛是一种能在幂时间\(\mathcalO(......
  • 学习之请求和响应
    3.2请求和响应报文3.2.1报文的格式主体上分为报文首部和报文主体,中间空行隔开报文部首可以继续细分为"行"和"头"3.2.2请求报文客户端发给服务端的报文请求报文格式请求首行(请求行);GET/POST资源路径?参数HTTP/1.1(默认是通过GET请求获取服务器信......
  • [没啥用科技] C++ 分数类
    虽然说用的是结构体,但已经实现了同类型加减乘除和分数与整型的加减乘除。写的有点难看,并伴有大常数,以后来改。#include<bits/stdc++.h>#include<bits/extc++.h>#definelllonglong#defineldblongdouble#definem_p(a,b)make_pair(a,b)usingnamespacestd;using......