SCU4437-Carries
来源:互联网 发布:软件杂志编委 编辑:程序博客网 时间:2024/06/17 20:46
题目链接:http://acm.scu.edu.cn/soj/problem.action?id=4437
题意:给你n个数,问两两相加会产生多少次进位
解题思路:考虑进位的位置即可, 首先枚举10, 100, 1000..., 1e9,达到了才会产生进位,对于每一次枚举10^t, 就是在n个数中对于每一个数x % 10^t, 所有的数模10^t之后, 二分以下不小于10^t - x的数有多少个
#include <iostream>#include <cstdio>#include <stack>#include <queue>#include <cstring>#include <string>#include <algorithm>#include <cmath>#include <bitset>#include <functional>#include <vector>#include <set>#include <map>using namespace std;#define LL long longconst int INF=0x3f3f3f3f;long long a[100010];long long b[100010];long long c[12]={1};int main(){for(int i=1;i<12;i++) c[i]=c[i-1]*10;int n;while(~scanf("%d",&n)){for(int i=0;i<n;i++)scanf("%lld",&a[i]);long long ans=0;for(int i=1;i<=9;i++){for(int j=0;j<n;j++)b[j]=a[j]%c[i];sort(b,b+n);for(int j=0;j<n;j++){int l=j+1,r=n,k=n;while(l<=r){int mid=(l+r)/2;if(b[mid]+b[j]>=c[i]) {r=mid-1,k=mid;}else l=mid+1;}ans+=n-k;}}printf("%lld\n",ans);}}
0 0
- SCU4437-Carries
- [SCU4437]Carries[数学][二分]
- [SCU4437] Carries [2015 Sichuan Province Contest Final B]
- Carries
- 【SCU】Carries
- Count The Carries
- 国庆弱校 Carries
- BNUOJ-50393-Carries
- SOJ 4437 Carries(二分)
- [SCU 4437 Carries] 二分
- scu oj 4437: Carries
- SCU 4437Carries(数论)
- 【思维】SCU 4437 Carries
- NJUST 1739 - Count The Carries
- njust 1739 - Count The Carries
- HDU 4588 Count The Carries
- hdu 4588 Count The Carries
- hdu 4588 Count The Carries
- Dalvik对比ART差异
- 1024. 科学计数法 (20)
- 《精通CSS》笔记1
- C++数据结构之AVL树
- spring 框架@Transactional 不回滚 解决办法
- SCU4437-Carries
- 在Windows/Linux Ubuntu双系统中卸载Ubuntu
- Eclipse常用快捷键汇总
- jquery的ajax实现jsonp
- Unix传奇(下篇)
- 河南省第七届省赛 问题 F: Turing equation 水题
- Linux打卡Day5
- hadoop中the authenticity of host 'ubuntu (127.0.1.1)' can't be established
- iOS 【invalid nib registered for identifier(Cell)】