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 (进位). She defines hardness h(x,y)h(x,y) for adding xx and 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 integers a1,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个数,问其中任意两个数相加能够有多少次进位。

例子:1+99=100,个位进位一次,十位进位一次,就是两次;

     50+50 十位进位一次,就是一次。

思维题,比较水的题目,一开始没有想到,想到了觉得好脑残的题目。

暴力会超时,直接sort再用lower_bound去找边界值,加上边界值就OK了。

AC代码:
/*/
#include"algorithm"
#include"iostream"
#include"cstring"
#include"cstdlib"
#include"cstdio"
#include"string"
#include"vector"
#include"stack"
#include"queue"
#include"cmath"
#include"map"
using namespace std;
typedef long long LL ;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define FK(x) cout<<"["<<x<<"]\n"
#define memset(x,y) memset(x,y,sizeof(x))
#define memcpy(x,y) memcpy(x,y,sizeof(x))
#define bigfor(T)  for(int qq=1;qq<= T ;qq++)

const int MX=1e5+1e3;

LL num[MX],temp[MX];

int main(){
	int n;
	while(~scanf("%d",&n)){
	LL ans=0,mod=1;
		for(int i=1;i<=n;i++){
			scanf("%lld",&num[i]);
		}
		for(int i=1;i<=9;i++){
			mod*=10;
			for(int i=1;i<=n;i++)temp[i]=num[i]%mod; //按照个位十位百位千位轮着保存所有的数。
			sort(temp+1,temp+n+1);//排序
			for(int i=1;i<=n;i++)ans+=n-(lower_bound(temp+i+1,temp+n+1,mod-temp[i])-temp)+1;
			//如果某个数比此时mod-目标数大,那么这个数加上目标数就会进一位,把这些数个数求和。
		}
		printf("%lld\n",ans);
	}
	return 0;
}

  

 
 
时间: 2024-10-29 19:12:12

ACM:SCU 4437 Carries - 水题的相关文章

HDU ACM 2054 A == B ? 水题

分析:水题,主要是要注意几个细节. #include<iostream> using namespace std; char a[100005],A[100005]; char b[100005],B[100005]; void Process(char* p,int count,char* p2) { int pos; bool is_real; int i=0,k=0,j; label: while(*(p+i)!='\0' && *(p+i)=='0') i++; if(

HDU ACM 2521 反素数 水题+因子打表

分析:水题,不解释. #include<iostream> using namespace std; int cnt[6000]; void init() //打表 { int i,j; memset(cnt,0,sizeof(cnt)); cnt[1]=1; //1只有他本身 for(i=2;i<=5005;i++) { cnt[i]+=2; //1和他本身 for(j=2;j<=i/2;j++) if(i%j==0) cnt[i]++; } } int main() { int

HDU ACM 1031 Design T-Shirt 水题

分析:给你n个人M件衣服, 选出前K件衣服评价最大值,注意要输出的是编号,编号从大到小.两次排序即可. #include<iostream> #include<algorithm> using namespace std; struct node { double m; int id; }; bool cmp(const node& a,const node& b) { if(a.m!=b.m) return a.m>b.m; else return a.id

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枚举到

[ACM] Color the ball [线段树水题][数组开大]

Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色.但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗? Input 每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N).  当N

HDU ACM 1017 A Mathematical Curiosity 水题

分析:水题,但要注意格式. #include<iostream> using namespace std; int core(int n,int m) { int i,j,ans=0; for(i=1;i<n;i++) for(j=i+1;j<n;j++) if((i*i+j*j+m)%(i*j)==0) ans++; return ans; } int main() { int T,t,n,m; bool fg=false; scanf("%d",&T

scu 4436: Easy Math 水题

4436: Easy Math Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.scu.edu.cn/soj/problem.action?id=4436 Description Given n integers a1,a2,…,an, check if the sum of their square root a1+a2+…+an is a integer. Input The input consists of multiple

ACM :漫漫上学路 -DP -水题

CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit Status Description 对于csuxushu来说,能够在CSU(California State University)上学是他一生的荣幸.CSU校园内的道路设计的十分精巧,由n+1条水平道路和n+1条竖直道路等距交错而成,充分体现了校园深厚的文化底蕴.然而不幸的是CS市每到夏季,天降大雨,

HDU ACM 1073 Online Judge -&gt;字符串水题

分析:水题. #include<iostream> using namespace std; #define N 5050 char a[N],b[N],tmp[N]; void Read(char p[]) { getchar(); gets(tmp); while(gets(tmp)) { if(strcmp(tmp,"END")==0) break; if(strlen(tmp)!=0) strcat(p,tmp); strcat(p,"\n");