PAT 1064. 朋友数(20)

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。

输入格式:

输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104

输出格式:

首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

输入样例:

8
123 899 51 998 27 33 36 12

输出样例:

4
3 6 9 26
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<ctype.h>
 5 #include<math.h>
 6 int cmp(const void *a,const void *b){
 7     return *(int*)a-*(int*)b;
 8 }
 9 int main(){
10     int n;
11     char a[10];
12     int b[10010];
13     int len;
14     int sum;
15     int h=0;
16     int j;
17     scanf("%d",&n);
18     for(int i=0;i<n;i++){
19         scanf("%s",a);
20         sum = 0;
21         len = strlen(a);
22         for(j=0;j<len;j++){
23             sum = sum+(a[j]-‘0‘);
24         }
25         for(j=0;j<h;j++){
26             if(sum==b[j]){
27                 break;
28             }
29         }
30         if(j==h){
31             b[h++] = sum;
32         }
33
34     }
35     qsort(b,h,sizeof(int),cmp);
36     printf("%d\n",h);
37     for(int i=0;i<h;i++){
38         if(!i)
39             printf("%d",b[i]);
40         else
41             printf(" %d",b[i]);
42     }
43
44 } 
时间: 2025-01-02 04:58:44

PAT 1064. 朋友数(20)的相关文章

1064. 朋友数(20)

1064. 朋友数(20) 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号.给定一些整数,要求你统计一下它们中有多少个不同的朋友证号.注意:我们默认一个整数自己是自己的朋友. 输入格式: 输入第一行给出正整数N.随后一行给出N个正整数,数字间以空格分隔.题目保证所有数字小于104. 输出格式: 首先第一行输出给定数字中不同的朋友证号的

PAT Basic 1064 朋友数 (20 分)

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号.给定一些整数,要求你统计一下它们中有多少个不同的朋友证号. 输入格式: 输入第一行给出正整数 N.随后一行给出 N 个正整数,数字间以空格分隔.题目保证所有数字小于 1. 输出格式: 首先第一行输出给定数字中不同的朋友证号的个数:随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格

1064 朋友数 (20 分)

#include <iostream> #include <set> // set 集合中没有重复的元素 using namespace std; int cmp(int t) { int sum = 0; while (t != 0) { sum += t % 10; t /= 10; } return sum; } int main() { int n, x; set <int> st; cin >> n; while (n--) { cin >&

PAT 1035. Password (20)

1035. Password (20) To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem is that there are always some confusing passwords since it is hard to distinguish 1 (one) from l (L in lowercase), or 0 (zero) fro

PAT 1062. 最简分数(20)

一个分数一般写成两个整数相除的形式:N/M,其中M不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1 和 N2/M2,要求你按从小到大的顺序列出它们之间分母为K的最简分数. 输入格式: 输入在一行中按N/M的格式给出两个正分数,随后是一个正整数分母K,其间以空格分隔.题目保证给出的所有整数都不超过1000. 输出格式: 在一行中按N/M的格式列出两个给定分数之间分母为K的所有最简分数,按从小到大的顺序,其间以1个空格分隔.行首尾不得有多余空格.题目保证

PAT 1064 Complete Binary Search Tree

1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <vector> 5 #include <algorithm> 6 7 using namespace std; 8 9 class Node { 10 public: 11 int val; 12 Node* left; 13 Node* right; 14 public: 15 Node(): v

PAT 1061. Dating (20)

1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int main() 7 { 8 string s1, s2, s3, s4; 9 cin >> s1 >> s2 >> s3 >> s4; 10 string day[7]{"MON", "TUE", "WED", "THU

PAT 1077 Kuchiguse (20)

The Japanese language is notorious for its sentence ending particles. Personal preference of such particles can be considered as a reflection of the speaker's personality. Such a preference is called "Kuchiguse" and is often exaggerated artistic

[PAT]素因子分解(20)

#include "stdio.h" #include "math.h" long Prime(long); long PrimeCount(long,long); int main() { int a,curPrime,cfCount; int v; int tPrime=0; scanf("%d",&a); v=Prime(a); curPrime=a; printf("%d=",a); if(v==1||v==a