打卡信奥刷题(3138)用C++实现信奥题 P7617 [COCI 2011/2012 #2] KOMPIĆI

张开发
2026/4/21 7:13:19 15 分钟阅读

分享文章

打卡信奥刷题(3138)用C++实现信奥题 P7617 [COCI 2011/2012 #2] KOMPIĆI
P7617 [COCI 2011/2012 #2] KOMPIĆI题目描述给定N NN个正整数A 1 , A 2 , . . . , A N A_1,A_2,...,A_NA1​,A2​,...,AN​求有多少整数对( i , j ) (i,j)(i,j)满足以下条件1 ≤ i j ≤ N 1 \le i j \le N1≤ij≤NA i A_iAi​和A j A_jAj​至少有一位数字是相同的不一定要在相同的数位。输入格式输入的第一行包含一个正整数N NN。接下来N NN行每行包含一个正整数A i A_iAi​。输出格式输出一行一个整数表示满足条件的整数对。输入输出样例 #1输入 #13 4 20 44输出 #11输入输出样例 #2输入 #24 32 51 123 282输出 #24说明/提示【样例解释】样例 1 中满足要求的整数对为( 1 , 3 ) (1,3)(1,3)。样例 2 中满足要求的整数对为( 1 , 3 ) (1,3)(1,3)( 1 , 4 ) (1,4)(1,4)( 2 , 3 ) (2,3)(2,3)( 3 , 4 ) (3,4)(3,4)。【数据范围】对于100 % 100\%100%的数据1 ≤ N ≤ 10 6 1 \le N \le 10^61≤N≤1061 ≤ A i ≤ 10 18 1 \le A_i \le 10^{18}1≤Ai​≤1018。【说明】本题分值按 COCI 原题设置满分120 120120。题目译自COCI2011-2012 CONTEST #2T4 KOMPIĆI。C实现#includeiostreamusingnamespacestd;constintMaxN110;longlongcnt[MaxN],ans;intmain(){intn;cinn;for(longlongi1,x,s0;in;i,s0){cinx;while(x){s|1(x%10);x/10;}cnt[s];}for(inti0;iMaxN;i){for(intji;jMaxN;j){if(ij){ans(i!j?cnt[i]*cnt[j]:cnt[i]*(cnt[i]-1ll)/2ll);}}}coutans;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

更多文章