hdu 4961 数论?
http://acm.hdu.edu.cn/showproblem.php?pid=4961
给定ai数组;
构造bi, k=max(j | 0<j<i,a j%ai=0), bi=ak;
构造ci, k=min(j | i<j≤n,aj%ai=0), ci=ak;
求所有bi∗ci的和
f[x]表示能整除x的最近的下标,边构造边更新f数组,复杂度约为O(N*sqrt(A[I])) = O(10^7),可以接受,然后把所有b*c加起来即可
另外,我写的程序里面c[i]指的是上面说的b[i]...
预先处理好所有ai的因子也许能更快
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
#define N 100005
#define M 16000005
#define pi acos(-1.0)
#define eps 1e-9
#define Mod 1000000007
int n , m , K;
int a[N];
int f[N];
int c[N]; void work(){
int i , j , k , x , y , d;
for (i=0;i<n;++i)
scanf("%d",&a[i]);
memset(f,-1,sizeof(f));
for (i=0;i<n;++i){
c[i] = ~f[a[i]] ? a[f[a[i]]] : a[i];
x = sqrt(a[i]);
for (j=1;j<=x;++j)
if (a[i] % j == 0) f[j] = i , f[a[i]/j] = i;
}
memset(f,-1,sizeof(f));
long long ans = 0;
for (i=n-1;i>=0;--i){
ans += 1ll*c[i] * (~f[a[i]] ? a[f[a[i]]] : a[i]);
x = sqrt(a[i]);
for (j=1;j<=x;++j)
if (a[i] % j == 0) f[j] = i , f[a[i]/j] = i;
}
printf("%I64d\n",ans);
} int main(){
while (~scanf("%d",&n) && n)
work();
return 0;
}
hdu 4961 数论?的更多相关文章
- hdu 4961 数论 o(nlogn)
Boring Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Tot ...
- hdu 4961 Boring Sum(高效)
pid=4961" target="_blank" style="">题目链接:hdu 4961 Boring Sum 题目大意:给定ai数组; ...
- GCD and LCM HDU 4497 数论
GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...
- hdu 4961 Boring Sum(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4961 Problem Description Number theory is interesting ...
- HDU 4497 数论+组合数学
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 解题思路:将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y' ...
- hdu 4542 数论 + 约数个数相关 腾讯编程马拉松复赛
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others) ...
- hdu 1664(数论+同余搜索+记录路径)
Different Digits Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 3641 数论 二分求符合条件的最小值数学杂题
http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...
- hdu 4059 数论+高次方求和+容斥原理
http://acm.hdu.edu.cn/showproblem.php? pid=4059 现场赛中通过率挺高的一道题 可是容斥原理不怎么会.. 參考了http://blog.csdn.net/a ...
随机推荐
- Android.HowToDesignPluginArchitectureInAndroidApp
There is a tools called "dx", this tool can transfer Java Binary Code into Android Dalvik ...
- HDU 2665.Kth number 区间第K小
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- python入门科普IDE工具和编译环境
应友人之邀,今天来讲述python的一些入门内容.本次讲解的并不是语法或者某个模块. python下载安装 大多数 Linux 发行版在默认安装的情况 ...
- zz Alex's BLOG 串口连接
using System; using System.Collections.Generic;using System.ComponentModel;using System.Data;using S ...
- 最佳运动类APP-Keep设计与欣赏
运动类APP是大家手机中必备的一款软件.如果说谁手机里没有任何涉及运动类APP,那只能说真的与时代脱轨了.近些年随着物质生活条件的改善,人们开始越来越重视自己的身体,所以也越来越多的人会进行身体锻炼. ...
- 使用JavaScript实现表现和数据分离
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="utf-8&quo ...
- Spring Boot学习笔记:项目开发中规范总结
Spring Boot在企业开发中使用的很广泛,不同的企业有不同的开发规范和标准.但是有些标准都是一致的. 项目包结构 以下是一个项目常见的包结构 以上是一个项目的基本目录结构,不同的项目结构会有差异 ...
- NOIP模拟测试1(2017081501)
好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...
- GameObject.SendMessage
Message相关有3条指令: 要接收消息的GameObject.SendMessage ("函数名",参数,SendMessageOptions) //自身和父Objec ...
- 68.iOS设备尺寸及型号代码(iPhoneXR/XS)
所有设备型号官网地址: https://www.theiphonewiki.com/wiki/Models iPhone: 机型 像素 比例 像素密度 屏幕尺寸 机型代码 发布日期 iPhone 2g ...