Carries SCU - 4437

Carries

frog has nn integers a1,a2,…,ana1,a2,…,an, and she wants to add them pairwise.

Unfortunately, frog is somehow afraid of carries (进位). She defines hardness h(x,y)h(x,y) for adding xxand yy the number of carries involved in the calculation. For example, h(1,9)=1,h(1,99)=2h(1,9)=1,h(1,99)=2.

Find the total hardness adding nn integers pairwise. In another word, find

∑1≤i<j≤nh(ai,aj)∑1≤i<j≤nh(ai,aj)

.

Input

The input consists of multiple tests. For each test:

The first line contains 11 integer nn (2≤n≤1052≤n≤105). The second line contains nn integersa1,a2,…,ana1,a2,…,an. (0≤ai≤1090≤ai≤109).

Output

For each test, write 11 integer which denotes the total hardness.

Sample Input

    2
    5 5
    10
    0 1 2 3 4 5 6 7 8 9

Sample Output

    1
    20

这题题目简单粗暴 ,给你一个长度为n的数组,求出这个数组中任意两个数相加进位的次数这题是一个想法题,把一个数的每一位都分离出来,进行处理也就是取模运算int cnt=lower_bound(b,b+n,temp)-b; lower_bound的返回值是一个元素的指针,b为头指针两者相减就是这个元素与头元素之间有多少个元素。
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<queue>
 6 using namespace std;
 7 long long a[100010],b[100010];
 8 int main() {
 9     int n;
10     while(scanf("%d",&n)!=EOF){
11         for (int i=0 ;i<n ;i++){
12             scanf("%lld",&a[i]);
13         }
14         long long s=10,ans=0;
15         for (int k=0 ;k<10 ;k++ ,s=s*10){
16             for (int i=0 ;i<n ;i++ ){
17                 b[i]=a[i]%s;
18             }
19             sort(b,b+n);
20             long long temp;
21             for (int i=0 ;i<n ;i++){
22                 temp=s-b[i];
23                 if (b[n-1]>=temp){
24                     int cnt=lower_bound(b,b+n,temp)-b;
25                     if (cnt>i) ans+=n-cnt;
26                     else ans+=n-1-i;
27                 }
28             }
29         }
30         printf("%lld\n",ans);
31     }
32     return 0;
33 }


原文地址:https://www.cnblogs.com/qldabiaoge/p/8516338.html

时间: 2024-10-19 23:01:04

Carries SCU - 4437的相关文章

ACM:SCU 4437 Carries - 水题

SCU 4437  Carries Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Practice Description Carries frog has nn integers a1,a2,…,ana1,a2,…,an, and she wants to add them pairwise. Unfortunately, frog is somehow afraid of carries (进位). S

scu 4437 Carries

题意: 给出一个数组,计算所有对于1 <= i < j <= n,ai + aj的进位次数的总和. 思路: 一开始其实是卡在了,i只能与i之后的数字相加 == . 转换一下,i之前的数字一定会与i相加,i之后的数字也一定会与i相加,所以对于数组中的所有数字,两两之间一定会加一次. 有个很显然的结论,如果说两个数相加会对10^k产生进位的话,那么一定满足(a % (10 ^ k) + b % (10 ^ k)) >= 10 ^ k. 所以就可以针对每一位的进位进行计算. 从10枚举到

scu oj 4437: Carries (2015年四川省程序ACM设计竞赛B题目 )

其实这题只要想到这个结论就简单了.如果2个数a,b的第k位相加要进位,那么必须满足(a%10^k+b%10^k)>=10^k  .有了这个结论就很简单了,枚举没一位就好了. #include<stdio.h> #include<string.h> #include<iostream> #include<string> #include<queue> #include<cmath> #include<map> #inc

二分 + 模拟 - Carries

Carries Problem's Link Mean: 给你n个数,让你计算这n个数两两组合相加的和进位的次数. analyse: 脑洞题. 首先要知道:对于两个数的第k位相加会进位的条件是:a%(10^k)+b%(10^k)>=10^k. 想到这一点后就简单了,枚举每一位(最长9位),然后每个数都模10^k,然后排序二分. 排序后,如果b[i]+b[j]>=k,那么i~j-1这段也满足b[i]+b[j]>=k. Time complexity: O(n*logn) view code

脆和响应得益于先进的压缩功能LizardTech GeoExpress Unlimited v9.5.2.4437 Win32_64

脆和响应得益于先进的压缩功能LizardTech GeoExpress Unlimited v9.5.2.4437 Win32_64     该软件提供了一个简单的地理空间数据解方案.可给使用者带来一系列利益.自定义多光谱图像.正好复制你的图像波段,改变它们的序列,甚至为每个波段设置不同的压缩比.rSID代4(MG4)图像文件支持最多255个图像波段.行业标准的MrSID图像格式跨跃范围最广的地理应用都被支持,包括ArcGIS, ERDAS, ENVI, Socet GXP, 和 Microst

scu - 3254 - Rain and Fgj(最小点权割)

题意:N个点.M条边(2 <= N <= 1000 , 0 <= M <= 10^5),每一个点有个权值W(0 <= W <= 10^5),现要去除一些点(不能去掉点0),使得结点 0 与结点 N - 1 不连通,求去掉的点的最小权值和. 题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=3254 -->>这是很明显的最小点权割.. 建图方案: 1)将全部点 i 拆成 i 和 i + N.i ->

SCU 2941 I NEED A OFFER!(01背包变形)

I NEED A OFFER!     64bit IO Format: %lld & %llu Submit Status Description Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料, 于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定的申请费用, 这可是很惊人的.Speakless没有多少钱,总共只攒了n万美元.他将在m个学校中选择若干的 (当然要在他的经济承受范围内).每个学校都有不同的申请费用a(万美

SCU 4436 Easy Math 2015年四川省赛题

题目链接:http://acm.scu.edu.cn/soj/problem/4436/ 题意:给你n个整数,求这n个数的平方根和是否是一个整数: 解题思路:如果这题每个数给他算出来,必然费时间,可能还会超精度,所以巧妙的方法就是判断这些整数是否全是完全平方数,如果有一个不是,则他们的平方根和肯定不是一个整数. AC代码: #include <cstdio> #include <cmath> #include <cstring> #include <algorit

SCU 4424(求子集排列数)

A - A Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice SCU 4424 Description Time Limit: 1000ms Description Given N distinct elements, how many permutations we can get from all the possible subset of the eleme