看程序写结果
来源:互联网 发布:小学网络安全教育教案 编辑:程序博客网 时间:2024/03/28 18:25
看程序写结果
题目描述:
LYK 最近在准备 NOIP2017 的初赛,它最不擅长的就是看程序写结果了,因此它拼命地在练习。
这次它拿到这样的一个程序:
C++:
scanf(“%d”,&n);
for (i=1; i<=n; i++) scanf(“%d”,&a[i]);
for (i=1; i<=n; i++) for (j=1; j<=n; j++) for (k=1; k<=n; k++) for (l=1; l<=n; l++)
if (a[i]==a[j] && a[i]< a[k] && a[k]==a[l]) ans=(ans+1)%1000000007;
printf(“%d\n”,ans);
LYK 知道了所有输入数据,它想知道这个程序运行下来会输出多少。
输入格式:
第一行一个数 n,第二行 n 个数,表示 ai。
输出格式(program.out)
一个数表示答案。
输入样例:
4
1 1 3 3
输出样例:
4
数据范围:
对于 20%的数据 n<=50。
对于 40%的数据 n<=200。
对于 60%的数据 n<=2000。
对于 100%的数据 n<=100000, 1<=ai<=1000000000。
其中均匀分布着 50%的数据不同的 ai 个数<=10,对于另外 50%的数据不同的 ai 个数>=n/10。
思路:
题目的意思就是找到i,j,k,l
使得a[i]==a[j]
#include<iostream>#include<cstdio>#include<algorithm>#define lon long longusing namespace std;const int maxn=100010;const int mod=1000000007;lon n,a[maxn],b[maxn],s[maxn],sum[maxn];int main(){ freopen("program.in","r",stdin); freopen("program.out","w",stdout); scanf("%lld",&n); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); b[i]=a[i]; } sort(b+1,b+n+1); lon tot=unique(b+1,b+n+1)-b-1; for(int i=1;i<=n;i++) { lon pos=lower_bound(b+1,b+tot+1,a[i])-b; sum[pos]++; } lon ans=0; for(lon i=tot;i>=1;i--) { sum[i]=sum[i]%mod*sum[i]%mod; s[i]=s[i+1]+sum[i]; ans=(ans+sum[i]*s[i+1]%mod)%mod; } cout<<ans; fclose(stdin);fclose(stdout); return 0;}
0 0
- 看程序写结果
- 看程序写结果
- 看程序,写结果
- 看程序写结果
- java(看程序写结果)
- 看程序写结果(program)
- String 看程序写结果
- 面试题10:看程序写结果(继承)
- java面试题1--继承--看程序写结果
- 面向对象_代码块看程序写结果
- 常见对象_String面试题看程序写结果
- 面向对象-代码块看程序写结果
- 读程序写结果:
- 写程序结果
- 看奥运,写程序
- 面向对象_多态的练习题看程序写结果
- java_se_recall 看程序写结果测试题 (包含继承 重写 多态知识)
- 阅读程序,写结果1
- 452. Minimum Number of Arrows to Burst Balloons
- Eclipse项目名称前红色感叹号的问题如何解决
- Map遍历的keySet()和entrySet()性能差异原因
- Node.js 与 Python 作为后端服务的编程语言各有什么优劣?“写做好一件事的小程序,然后把它们串起来”
- 1341
- 看程序写结果
- XML中XPath的应用
- FZU 2177 ytaaa(区间dp动态规划)
- masterJ2EE篇004——找不到自定义的Servlet
- linux centos源码编译安装Nginx和PHP
- PHP创建验证码
- JavaScript数组去重的几种方法效率测试
- 单例模式写法
- 第十周练习-1 输出10000内回文数