组队赛3-B ,HDU 4961 Boring Sum(数学题)
来源:互联网 发布:matlab 矩阵转置 编辑:程序博客网 时间:2024/04/30 20:10
kj点击打开链接
其实是求,这一串数中的,每一个数左方为此数倍数的的最大下标对顶的数与右方为此倍数的最小下标对应的数的累加和
#include <iostream>#include <cstring>#include <cstdio>#include<vector>#include<algorithm>using namespace std;#define maxn 100010vector<int>q[maxn];int a[maxn];int t[maxn];//最大下标,保存int c[maxn];int b[maxn];int main(){ for(int j=1;j<maxn;j++) for(int i=j;i<maxn;i+=j) q[i].push_back(j);//储存i的各个因子 int n; while(cin >> n && n) { memset(t,0,sizeof(t)); for(int i=1;i<=n;i++)//t[i]对应0~i a[i]倍数的最大下标; { cin>>a[i]; int f; f=t[a[i]]==0?i:t[a[i]];//最大下标 b[i]=a[f]; for(int j=0;j<q[a[i]].size();j++)//遍历a[i]的因子们,他们的最大取值为当前i t[q[a[i]][j]]= i; } memset(t,0x3f,sizeof(t)); for(int i=n;i>=1;i--) { int f; f=t[a[i]]==0x3f3f3f3f?i:t[a[i]]; c[i]=a[f]; for(int j=0;j<q[a[i]].size();j++) t[q[a[i]][j]]=i; } long long ans=0; for(int i=1;i<=n;i++) ans+=(long long)b[i]*c[i]; printf("%lld\n",ans); } return 0;}
0 0
- 组队赛3-B ,HDU 4961 Boring Sum(数学题)
- hdu 4961 Boring Sum(数学题)
- HDU 4961 Boring Sum
- HDU - 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 Boring Sum
- hdu 4961 Boring Sum
- HDU 4961 Boring Sum
- hdu 4961 Boring Sum
- HDU 4961 Boring Sum
- HDU 4961 Boring Sum(构造题)
- HDU-4961 Boring Sum (模拟)
- 组队赛(B/H Sudoku) HDU
- hdu 4961 Boring Sum 多校九
- hdu 4961 Boring Sum(高效)
- 【瞎搞】HDU 4961 Boring Sum
- HDU 4961(杭电多校#9 1002题)Boring Sum(瞎搞)
- HDU 4961 Boring Sum(哈希标记,暴力枚举)
- 交换机ip与网关ip冲突的问题
- 读《大学》领悟
- TCP,UDP浅析
- 三个水杯
- HDOJ3555 Bomb
- 组队赛3-B ,HDU 4961 Boring Sum(数学题)
- 使用BigDecimal进行精确运算
- SQL Server 基础之增删查改
- 冒泡排序,简单选择排序
- [R语言统计]秩转换的非参数检验
- linux时间编程学习
- Python1
- 关于java的深克隆与浅克隆
- openVR驱动接口之ITrackedDeviceServerDriver简介