Codeforces 616E Sum Of Reminders
616传送门:http://codeforces.com/contest/616/problem/E
刚开始那个判断条件写错了,即判断什么时候应该减掉,减的方法对了,但刚开始写的那个条件是永远都成立的,
if(ans[i-1].fi<m)这样就导致了第一个样例总是多减掉,而实际应该是当m<n的时候减掉,这就说明自己想的时候是只按照那一种情况想的,应该跳出思维的局限性
写的时候卡了2处:
第一处为存因子的时候,由于对具体的过程没有想清楚,所以在*号里面的存储方式是错误的
比方说:
25
1 25
2 12
3 8
4 6
5 5
6 4
8 3
12 2
只有在根号N后面的才可以整体处理,而前面的则不行,因为越过根号N之后才能使后面的值保持不变,只有前面的基数足够大,才能使后面的商的结果不变,而只用因子那绝对是错的,下次应该在纸上模拟清楚之后再敲! ! !第二处错误为每一步都要取一次模,实际操作的过程中在局部乘法的时候忘记取模了,导致最后出现了负值(一次加法不足以加到正数),还有坑点就是在整除2的位置处要判断哪一个是正好整除,一定要细致! ! !**#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
const int maxn=1e3+10;
ll n,m;
const ll mod=1e9+7;
vector<pair<ll,ll>>ans;
void debug(){for(pair<ll,ll> x:ans){printf("%lld %lld\n",x.first,x.second);}
}
ll work(ll i,ll j){if((i+j)%2==0)return (((i+j)/2%mod)*((j-i+1)%mod))%mod;return (((i+j)%mod)*((j-i+1)/2%mod))%mod;
}
int main(){cin>>n>>m;ll sum=((n%mod)*(m%mod))%mod;for(ll i=1;i*i<=n;i++){ll tmp=n/i;ans.pb(mp(i,tmp));if(tmp!=i) ans.pb(mp(tmp,i));/*if(n%i==0){ans.pb(mp(i,n/i));}if(n!=i*i) ans.pb(mp(n/i,i));*/}ans.pb(mp(0,0));sort(ans.begin(),ans.end());//debug();int i;for(i=1;i<ans.size()&&ans[i].fi<=m;i++){sum=(sum-((work(ans[i-1].fi+1,ans[i].fi)*(ans[i].se%mod)))%mod+mod)%mod;}if(m<n){i--;sum=(sum-((work(ans[i].fi+1,m)*(ans[i+1].se%mod)))%mod+mod)%mod;}cout<<sum<<endl;return 0;
}
Codeforces 616E Sum Of Reminders相关推荐
- codeforces 85D. Sum of Medians
二次联通门 : codeforces 85D. Sum of Medians /*codeforces 85D. Sum of Medians正解线段树或是平衡树结果用vector暴力卡过去了 */ ...
- CodeForces - 1517A Sum of 2050
A. Sum of 2050 time limit per test1 second memory limit per test256 megabytes A number is called 205 ...
- codeforces 85D. Sum of Medians(线段树or分块)
题目链接:codeforces 85D. Sum of Medians 题意: add x 表示向集合中添加x(添加x的时候保证x是第一次被添加入集合) del x 表示从集合中删除x (删除x的时候 ...
- Codeforces 85D Sum of Medians(线段树)
题目链接:Codeforces 85D - Sum of Medians 题目大意:N个操作,add x:向集合中添加x:del x:删除集合中的x:sum:将集合排序后,将集合中所有下标i % 5 ...
- Codeforces 847C - Sum of Nestings
847C - Sum of Nestings 思路:简单的递归. 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...
- Codeforces 85D Sum of Medians
传送门 D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standa ...
- Codeforces 85D Sum of Medians[线段树]
题意:给了一个set,有n个操作,有三种操作 1. add x 把 x 放入set中: 2. del x 把 x 从set中删去: 3. sum 求set中,第n大的数,n%5==3,的总和. 分 ...
- CodeForces 85D Sum of Medians Splay | 线段树
Sum of Medians 题解: 对于这个题目,先想到是建立5棵Splay,然后每次更新把后面一段区间的树切下来,然后再转圈圈把切下来的树和别的树合并. 但是感觉写起来太麻烦就放弃了. 建立5棵线 ...
- codeforces E. Sum of Digits
这题可以暴力打本地表... 等正解出来再搞正解 对于k=0 我们让9尽量多就行 这个可以特判 对于k=1 暴力打表到1e9 对于k>=2 暴力打表到1e6(发现1e6以上就没有变化了) 当然这 ...
- CodeForces - 1373E Sum of Digits(贪心)
题目链接:点击查看 题目大意:设 f( x ) 为 x 的数位之和,给出一个 n 和一个 k ,求 的最小 x ,若不存在,输出 -1 题目分析:因为 n 和 k 比较小,所以可以打表,当 k 为 ...
最新文章
- 在ApacheHTTPD服务器中使用DSO完全分析
- 如何使用 C# 中的 ValueTask
- C++之函数的默认值参数说明
- [js] 微信小程序实现轨迹回放,微信原生小程序,基于uniapp的小程序?
- Winform 水印TextBox
- 数据库——Oracle(1)
- 《Java就业培训教程》_张孝祥_书内源码_03
- visio一分二的箭头_visio软件双箭头连接线怎么画?
- MUI全国城市区县级联json转换sql建表
- ESP32-C3编译问题
- jde多目标_CVPR 2020 多目标跟踪算法JDE 训练
- UTC时区表(.Net)
- android wifi 流程图_实现双wifi的方法及Android终端与流程
- 微信开发者工具预览二维码无法显示
- win10的JDK安装环境变量配置
- 炒股第一招【看盘技巧】
- 测序总结,高通量测序名词
- 测试集群,任务运行失败
- java字符串去重_java字符串去重方法详解,字符串如何去重?
- ip子网划分计算题举例说明