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相关推荐

  1. codeforces 85D. Sum of Medians

    二次联通门 : codeforces 85D. Sum of Medians /*codeforces 85D. Sum of Medians正解线段树或是平衡树结果用vector暴力卡过去了 */ ...

  2. CodeForces - 1517A Sum of 2050

    A. Sum of 2050 time limit per test1 second memory limit per test256 megabytes A number is called 205 ...

  3. codeforces 85D. Sum of Medians(线段树or分块)

    题目链接:codeforces 85D. Sum of Medians 题意: add x 表示向集合中添加x(添加x的时候保证x是第一次被添加入集合) del x 表示从集合中删除x (删除x的时候 ...

  4. Codeforces 85D Sum of Medians(线段树)

    题目链接:Codeforces 85D - Sum of Medians 题目大意:N个操作,add x:向集合中添加x:del x:删除集合中的x:sum:将集合排序后,将集合中所有下标i % 5 ...

  5. Codeforces 847C - Sum of Nestings

    847C - Sum of Nestings 思路:简单的递归. 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

  6. Codeforces 85D Sum of Medians

    传送门 D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standa ...

  7. Codeforces 85D Sum of Medians[线段树]

    题意:给了一个set,有n个操作,有三种操作 1. add  x 把 x 放入set中: 2. del  x 把 x 从set中删去: 3. sum 求set中,第n大的数,n%5==3,的总和. 分 ...

  8. CodeForces 85D Sum of Medians Splay | 线段树

    Sum of Medians 题解: 对于这个题目,先想到是建立5棵Splay,然后每次更新把后面一段区间的树切下来,然后再转圈圈把切下来的树和别的树合并. 但是感觉写起来太麻烦就放弃了. 建立5棵线 ...

  9. codeforces E. Sum of Digits

    这题可以暴力打本地表...  等正解出来再搞正解 对于k=0 我们让9尽量多就行 这个可以特判 对于k=1 暴力打表到1e9 对于k>=2 暴力打表到1e6(发现1e6以上就没有变化了) 当然这 ...

  10. CodeForces - 1373E Sum of Digits(贪心)

    题目链接:点击查看 题目大意:设 f( x ) 为 x 的数位之和,给出一个 n 和一个 k ,求  的最小 x ,若不存在,输出 -1 题目分析:因为 n 和 k 比较小,所以可以打表,当 k 为 ...

最新文章

  1. 在ApacheHTTPD服务器中使用DSO完全分析
  2. 如何使用 C# 中的 ValueTask
  3. C++之函数的默认值参数说明
  4. [js] 微信小程序实现轨迹回放,微信原生小程序,基于uniapp的小程序?
  5. Winform 水印TextBox
  6. 数据库——Oracle(1)
  7. 《Java就业培训教程》_张孝祥_书内源码_03
  8. visio一分二的箭头_visio软件双箭头连接线怎么画?
  9. MUI全国城市区县级联json转换sql建表
  10. ESP32-C3编译问题
  11. jde多目标_CVPR 2020 多目标跟踪算法JDE 训练
  12. UTC时区表(.Net)
  13. android wifi 流程图_实现双wifi的方法及Android终端与流程
  14. 微信开发者工具预览二维码无法显示
  15. win10的JDK安装环境变量配置
  16. 炒股第一招【看盘技巧】
  17. 测序总结,高通量测序名词
  18. 测试集群,任务运行失败
  19. java字符串去重_java字符串去重方法详解,字符串如何去重?
  20. ip子网划分计算题举例说明

热门文章

  1. colunm-count, orphans,widows
  2. Blend Shape Pose Animation
  3. 微信打开跳转浏览器php代码,简单通用QQ/微信跳转浏览器打开代码
  4. 区块链MMO游戏该如何设计Token经济?
  5. css文字背景蒙版_使用CSS创建蒙版的背景效果
  6. 「模仿」是架构师的基本能力:守破离
  7. 为什么学校的计算机识别不出u盘,电脑读不出u盘是什么问题 为什么电脑不能识别u盘...
  8. 《关键对话》读书笔记
  9. 前言,flutter页面切换动画
  10. 如何看懂congestion map