有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:
 
fun(A)
    sum = 0
    for i = 1 to A.length
        for j = i+1 to A.length
            sum = sum + Floor((A[i]+A[j])/(A[i]*A[j])) 
    return sum
 
给出数组A,由你来计算fun(A)的结果。例如:A = {1, 4, 1},fun(A) = [5/4] + [2/1] + [5/4] = 1 + 2 + 1 = 4。

收起

 

输入

第1行:1个数N,表示数组A的长度(1 <= N <= 100000)。
第2 - N + 1行:每行1个数A[i](1 <= A[i] <= 10^9)。

输出

输出fun(A)的计算结果。

输入样例

3
1 4 1

输出样例

4

暴力应该会超时吧,可以找规律,这样一道题不能说上来就暴力,和除以积向下取整,可以分解(x+y)/x*y = 1/x+1/y,是两个分子为1的分数的和,这样我们发现如果1/x+1/y小于1,那么原分数的值将为0,也就是说原分数取值也就是0,1,2这三种,x和y都是1那么就是取值2,x和y一个是1,另一个不是1,那么就取值1,或者x和y都是2,取值1,其他的都是0.
代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
typedef pair<int,int> pa;
int n,sum,a,b;
int s[];
int main() {
scanf("%d",&n);
for(int i = ;i < n;i ++) {
scanf("%d",&s[i]);
if(s[i] == ) a ++;
else if(s[i] == ) b ++;
}
sum = a * (n - ) + b * (b - ) / ;
printf("%d",sum);
}

最新文章

  1. 设置R启动时自动加载常用的包或函数
  2. DOM的基本属性
  3. 原创教程:《metasploit新手指南》介绍及下载
  4. 【HOG】
  5. IP地址更改小工具(bat命令)
  6. Android打包签名
  7. 【mysql】关于innodb_file_format
  8. php--数据库三范式
  9. 【BZOJ1011】【HNOI2008】遥远的行星
  10. 一次PostgreSql数据迁移,使用nodejs来完成
  11. 使用JS制作一个鼠标可拖的DIV(二)——限制区域移动
  12. Mac - 更新 Ruby
  13. dtGrid插件集成到Angular环境实现表格化数据展现
  14. CSS 定位 (Positioning)学习
  15. JAVA CAS单点登录(SSO)
  16. 剑指offer编程题Java实现——面试题11数值的整数次方
  17. 北京地铁换乘算法(二维坐标系,图的深度搜索)开源下载Android源码、性能最优解
  18. 使用python操作XML增删改查
  19. MySql TIMEDIFF做计算之后,后台报Illegal hour value &#39;24&#39; for java.sql.Time type 问题
  20. POJ 3181 Dollar Dayz 【完全背包】

热门文章

  1. Java语言和JVM的使用说明书
  2. Kubernetes 配置管理 ConfigMap(十二)
  3. openstack 权限控制 (添加自定义角色)keystone等组件
  4. jira中使用eazyBI
  5. Tomcat是一个Servlet容器?
  6. Python 实用第三方库安装方法
  7. Windows下Charles抓包https协议配置
  8. SpringBoot 返回Json实体类属性大小写问题
  9. python 获取mysql数据库列表以及用户权限
  10. [LOJ2537] [PKUWC2018] Minimax