久しぶり!

发现的一道有意思的题,想了半天都没有找到规律,结果竟然是思路题。。(在大佬题解的帮助下)

原题戳>>https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1305<<

有这样一段程序,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。
Input
  1. 1行:1个数N,表示数组A的长度(1 <= N <= 100000)。
  2. 2 - N + 1行:每行1个数A[i](1 <= A[i] <= 10^9)。
Output
  1. 输出fun(A)的计算结果。
Input示例
  1. 3
  2. 1 4 1
Output示例
  1. 4
  1. 一开始看到这个公式,直接脑补到了求并联电路电阻和的公式,然后神TM在这上面找规律。。。然后gg
    其实这题的数字中只有12是有作用的。从公式里可以看出,两者都大于2的所有组合在向下取整后都会为0
    例如5 7 ——>5+7/5x7<1--->0
    22组合则是1 2 2——>2+2/2*2=1
    1和其他如何数组合都是1
    所以这题统计一下3个数据——1的数目、2的数目、其他数数目(总数减前两者)即可。
    之后再把他们按前面的结论组合求解即可,代码如下:
  1. #include<iostream>
  2. #include<stdio.h>
  3. using namespace std;
  4. int a[];
  5. int main()
  6. {
  7. int n,i,j,e1=,e2=;
  8. cin>>n;
  9. for(i=;i<n;i++)
  10. {
  11. scanf("%d",&a[i]);
  12. if(a[i]==) e1++;
  13. if(a[i]==) e2++;
  14. }
  15. long long ans=;
  16. ans+=(e1-)*(e1-)+(e1-);
  17. ans+=e1*(n-e1);
  18. ans+=((e2-)*(e2-)+(e2-))/;
  19. cout<<ans<<endl;
  20. }
  1.  

  1.  
  1.  

51nod P1305 Pairwise Sum and Divide ——思路题的更多相关文章

  1. 51Nod 1305 Pairwise Sum and Divide | 思维 数学

    Output 输出fun(A)的计算结果. Input示例 3 1 4 1 Output示例 4 first try: #include "bits/stdc++.h" using ...

  2. [51nod] 1305 Pairwise Sum and Divide 数学

    有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:   fun(A)     sum = 0     for i = 1 to A.length         for j = ...

  3. 51nod 1305 Pairwise Sum and Divide

    有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:   fun(A)     sum = 0     for i = 1 to A.length         for j = ...

  4. 51nod1305 Pairwise Sum and Divide

    题目链接:51nod 1305 Pairwise Sum and Divide 看完题我想都没想就直接暴力做了,AC后突然就反应过来了... Floor( (a+b)/(a*b) )=Floor( ( ...

  5. Pairwise Sum and Divide 51nod

      1305 Pairwise Sum and Divide 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有这样 ...

  6. 51nod 1305:Pairwise Sum and Divide

    1305 Pairwise Sum and Divide 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 有这样一段 ...

  7. 1305 Pairwise Sum and Divide

    1305 Pairwise Sum and Divide 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 有这样一段程序,fun会对 ...

  8. 1305 Pairwise Sum and Divide(数学 ,规律)

    HackerRank   1305 Pairwise Sum and Divide   有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:   fun(A)     sum = ...

  9. 1289 大鱼吃小鱼 1305 Pairwise Sum and Divide 1344 走格子 1347 旋转字符串 1381 硬币游戏

    1289 大鱼吃小鱼 有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右.游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼.从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右 ...

随机推荐

  1. 解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录

    我用的是faster-rcnn,在绘制训练过程的loss和accuracy曲线时候,抛出如下错误,在网上查找无数大牛博客后无果,自己稍微看了下代码,发现,extract_seconds.py文件的 g ...

  2. python内置函数bin

    bin() 返回一个整数 int 或者长整数 long int 的二进制表示. 代码示例: print(bin(10)) 运行结果: F:\dev\python\python.exe F:/pyCha ...

  3. 20165215 2017-2018-2 《Java程序设计》第6周学习总结

    20165215 2017-2018-2 <Java程序设计>第6周学习总结 教材学习内容总结 chapter8 Java把String类定义为final类,即String类不能有子类 用 ...

  4. 转:【专题二】HTTP协议详解

    我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后 ...

  5. 项目方说性能达到百万TPS,如何测试它的可信度?

    项目方说性能达到百万TPS,如何测试它的可信度? 应用系统性能提升的关键在于运维端的接入管理模型(AAA,认证 Authentication.授权 Authorization.计费 Accountin ...

  6. [转载]C#中IndexOf的使用

    注:此方法无法找出目标字符串第二次.第三次等出现的位置. 具体代码如下所示: 1 2 3 4 5 var array=['REG','2018','2018'];   array.indexOf(‘R ...

  7. java321 面向对象编程

  8. DOS下读取smbios的汇编程序(通过搜索memory)

    汇编程序编写的读取smbios的代码: ;------------------------------------------------- ;功能: 读取SMBIOS 的Entry Point ,并 ...

  9. Django里自定义用户登陆及登陆后跳转到登陆前页面的实现

    def logout(request): request.session.flush() return HttpResponseRedirect(request.META.get('HTTP_REFE ...

  10. Linux 添加网卡

    Linux 添加网卡 1.写入网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth1 # 网卡名字 DEVICE=eth1 # 网卡类型 TYPE=Eth ...