PAT (Basic Level) Practice | 朋友數

如果兩個整數各位數字的和是一樣的,則被稱為是“朋友數”,而那個公共的和就是它們的“朋友證號”。例如 123 和 51 就是朋友數,因為 1+2+3 = 5+1 = 6,而 6 就是它們的朋友證號。給定一些整數,要求你統計一下它們中有多少個不同的朋友證號。

輸入格式

輸入第一行給出正整數 N。隨后一行給出 N 個正整數,數字間以空格分隔。題目保證所有數字小于10的四次方 。

輸出格式:

首先第一行輸出給定數字中不同的朋友證號的個數;隨后一行按遞增順序輸出這些朋友證號,數字間隔一個空格,且行末不得有多余空格。

輸入樣例

8
123 899 51 998 27 33 36 12

輸出樣例

4
3 6 9 26

Code

鏈表法

其實,那時候我怎么寫只要是因為看到N沒有限制,所以想到了用鏈表的辦法——因為鏈表也是不加限制的,除非借不到內存了。

#include <stdio.h>
#include <stdlib.h>
typedef struct Node{int num;int summary;struct Node *next;
} Node;
typedef Node* List ;
void addNode(List* list, int num, int *count) {int sum = 0;do sum += num % 10; while((num /= 10) > 0);if(*list) {List last = *list, last1;while(last != NULL) {if(last->num == sum) {last->summary++;goto out;}last1 = last;last = last->next;}Node *p = (Node*)malloc(sizeof(Node));p->num = sum;p->summary = 1;p->next = NULL;last1->next = p;} else {Node *p = (Node*)malloc(sizeof(Node));p->num = sum;p->summary = 1;p->next = NULL;*list = p;}(*count)++;out:;
}
void readList(List* list) {List last = *list;while(last != NULL) {if(last == *list) printf("%d", last->num);else printf(" %d", last->num);last = last->next;}
}
void sortList(List* list) {List last = *list, last1;int temp;while(last != NULL) {last1 = last->next;while(last1 != NULL) {if(last->num > last1->num) {// 交換位置temp = last->num;last->num = last1->num;last1->num = temp;temp = last->summary;last->summary = last1->summary;last1->summary = temp;}last1 = last1->next;}last = last->next;}
}
int main() {List head = NULL;int N, num, count = 0;scanf("%d", &N);for(int i = 0; i < N; i++) {scanf("%d", &num);addNode(&head, num, &count);}printf("%d\n", count);sortList(&head);readList(&head);
}

但是,這實在是太長了,還容易發生錯誤。
后來,我就想到了第二種方法,就是只用malloc,這樣子錯誤率會降低一些。

連續空間法

#include <stdio.h>
#include <stdlib.h>
typedef struct Node{int num;int summary;
} Node;
int main() {int N, num, sum = 0, count = 0;scanf("%d", &N);Node *List = (Node*)malloc(sizeof(Node)*N), *p = List;for(int i = 0; i < N; i++) {sum = 0;scanf("%d", &num);while(num > 0) {sum += num % 10;num /= 10;}for(Node *q = List; q != p; q++) {if(sum == q->num) {q->summary++;goto out;}}p->num = sum;(p++)->summary = 1;count++;out:;}int temp;for(Node *q = List; q != p; q++) {for(Node *k = q+1; k != p; k++) {if(q->num > k->num) {temp = q->num;q->num = k->num;k->num = temp;temp = q->summary;q->summary = k->summary;k->summary = temp;}}}printf("%d\n", count);for(Node *q = List; q != p; q++) {if(q == List) printf("%d", *q);else printf(" %d", *q);}
}

一些碎碎念

其實,之所以會出現兩種方法,是因為前面寫鏈表法的時候,就想到還有更加簡單的,但是既然做都做了,總不可能只做一半就放棄吧,結果硬是把它寫出來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714583.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

億道信息輕工業三防EM-T195,零售、制造、倉儲一網打盡

厚度僅10.5mm&#xff0c;重量僅0.65千克的EM-T195&#xff0c;其緊湊而纖薄的設計為以往加固型平板帶來了全新的輕薄概念。盡管設計時尚、輕薄&#xff0c;但經過軍用認證的強固性仍然能夠承受所有具有挑戰性的環境條件。隨身攜帶無負擔的輕便性加上抗震功能使其成為餐廳、酒店…

C++_數據類型_字符型

作用 字符型變量用于顯示單個字符 語法 char ch a;注意 在顯示字符型變量時&#xff0c;用單引號將字符括起來&#xff0c;不要用雙引號單引號只能有一個字符&#xff0c;不可以是字符串 C和C中字符型變量只占用一個字節字符型變量并不是把字符本身放到內存中存儲&#xf…

Excel導出

目錄 Maven依賴 實體類 表頭列寬自適應處理器 行列凍結處理器 合并單元格處理器 工具類 Maven依賴 <!--easy excel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</vers…

數獨游戲(dfs)

代碼注釋如下 #include <iostream> using namespace std; const int N 10; bool col[N][N], rol[N][N], cell[3][3][N]; char g[N][N]; bool dfs(int x, int y) { //用bool這樣在找到一個方案就可以迅速退出if(y 9) x, y 0; //若y超出邊界&#xff0c;則第二…

S1---FPGA硬件板級原理圖實戰導學

視頻鏈接 FPGA板級實戰導學01_嗶哩嗶哩_bilibili FPGA硬件板級原理圖實戰導學 【硬件電路設計的方法和技巧-嗶哩嗶哩】硬件電路設計的方法和技巧01_嗶哩嗶哩_bilibili&#xff08;40min&#xff09; 【高速板級硬件電路設計-嗶哩嗶哩】 高速板級硬件電路設計1_嗶哩嗶哩_bil…

【RT-Thread基礎教程】郵箱的使用

文章目錄 前言一、郵箱的特性二、郵箱操作函數2.1 創建郵箱創建動態郵箱創建靜態郵箱 2.2 刪除郵箱2.3 發郵件2.4 取郵件 三、示例代碼總結 前言 RT-Thread是一個開源的實時嵌入式操作系統&#xff0c;廣泛應用于各種嵌入式系統和物聯網設備。在RT-Thread中&#xff0c;郵箱是…

輸入一個整數,輸出其最長連續因子。

輸入一個整數&#xff0c;輸出其最長連續因子。 例如 輸入&#xff1a;60 輸出&#xff1a;2 3 4 5 6 注意&#xff1a;1不算因子 輸入輸出格式 輸入描述: 輸入一個整數N&#xff0c;N<10000。 輸出描述: 輸出其最長連續因子&#xff0c;如果有多個最長&#xff0c;輸出…

HTML5浮動

1.標準文檔流組成 塊級元素&#xff08;block&#xff09; 內聯元素&#xff08;inline&#xff09; 2.display屬性 作用&#xff1a;指定HTML標簽的顯示方式 常用屬性 值 說明 block 塊級元素的默認值&#xff0c;元素會被顯示為塊級元素&#xff0c;該元素前后會帶有換行…

Linux UnixODBC安裝配置

配置 UnixODBC 夢之上關注IP屬地: 香港 0.2322020.12.09 13:23:10字數 1,202閱讀 5,447 麒麟&達夢適配系列: 1.麒麟服務器上安裝 DM8 2.配置 UnixODBC 3.beego-ORM 適配達夢 資源緊張的時候&#xff0c;服務器是大家共用的&#xff0c;上面部署了一堆服務。所以選用doc…

Lua速成(7)

一、Lua 元表(Metatable) 在 Lua table 中我們可以訪問對應的 key 來得到 value 值&#xff0c;但是卻無法對兩個 table 進行操作(比如相加)。 因此 Lua 提供了元表(Metatable)&#xff0c;允許我們改變 table 的行為&#xff0c;每個行為關聯了對應的元方法。 例如&#xf…

ShardingJdbc實戰-分庫分表

文章目錄 基本配置分庫分表的分片策略一、inline 行表達時分片策略algorithm-expression行表達式完整案例和配置如下 二、根據實時間日期 - 按照標準規則分庫分表標準分片 - Standard完整案例和配置如下 基本配置 邏輯表 邏輯表是指&#xff1a;水平拆分的數據庫或者數據表的相…

SpringBoot實戰(1)

SpringBoot總結 一,Spring 設計思想 OOP: 面向對象編程-》封裝、繼承、多態 BOP: 面向Bean編程-》一切從Bean開始 AOP: 面向切面編程-》解藕、專 人做專事 IOC: 控制反轉,將new 對象的操作交給Spring統一管理-》轉交控制權 DI/DL: 依賴注入/依賴查找-》自動賦值 DI和AOP…

LLVM 一些重要文檔 LLVM 3.0

基于LLVM 3.0: Documentation for the LLVM System at SVN head LLVM 作為庫的使用方法&#xff1a; Using The LLVM Libraries LLVM C 的編程規范&#xff1a; LLVM Coding Standards

stl 迭代器(Iterator)

定義 迭代器&#xff08;Iterator&#xff09;是STL&#xff08;Standard Template Library&#xff0c;標準模板庫&#xff09;中的一個核心概念&#xff0c;用于提供一種通用的方式來遍歷容器&#xff08;如vector、list、map等&#xff09;中的元素&#xff0c;而無需暴露容…

大小端問題

0. 介紹 大小端計算機存儲數據而安排字節的兩種順序。 針對的是字節。 大端與我們平時書寫的順序一致。 1. 大小端的判定 不需要手動判斷。 有一個頭文件endian.h; 可能會有宏 __BYTE_ORDER __BIG_ENDIAN __LITTLE_ENDIAN通過庫來進行判斷。 手動判斷 根據字節存取的順序…

【JSON2WEB】07 Amis可視化設計器CRUD增刪改查

總算到重點中的核心內容&#xff0c;CRUD也就是增刪改查&#xff0c;一個設計科學合理的管理信息系統&#xff0c;95%的就是CRUD&#xff0c;達不到這個比例要重新考慮一下你的數據庫設計了。 1 新增頁面 Step 1 啟動amis-editor Setp 2 新增頁面 名稱和路徑隨便命名&#xf…

Dynamo幕墻探究系列(一)

一直想寫個系列教程&#xff0c;但是沒有那么多時間整理資料&#xff0c;這次呢&#xff0c;先弄個小系列吧&#xff0c;還是和之前差不多的幕墻測試&#xff0c;我們分幾節課&#xff0c;一步一步深入研究。 今天先開個小頭兒&#xff0c;要弄的&#xff0c;就是下面這么個模型…

對象鎖與類鎖

不同鎖互不影響&#xff0c;共用一個鎖&#xff0c;可能會發生阻塞。 1.在修飾靜態方法時&#xff0c;鎖定的是當前類的 Class 對象&#xff0c;在下面的例子中就是SycTest1.class 2.當修飾非靜態方法時&#xff0c;鎖定的就是 this 對象&#xff0c;即當前的實例化對象 public…

【Git教程】(四)版本庫 —— 存儲系統,存儲目錄,提交對象及其命名、移動與復制~

Git教程 版本庫 1?? 一種簡單而高效的存儲系統2?? 存儲目錄&#xff1a;Blob 與 Tree3?? 相同數據只存儲一次4?? 壓縮相似內容5?? 不同文件的散列值相同6?? 提交對象7?? 提交歷史中的對象重用8?? 重命名、移動與復制&#x1f33e; 總結 事實上&#xff0c;我們…

keil MDK安裝armcc V5編譯器

不知道從什么時候開始&#xff0c;Keil MDK默認不支持V5的編譯器了&#xff0c;里面默認只有V6的編譯器&#xff0c;設置界面跟V5有很大的差異不太熟悉。最可怕的是&#xff0c;之前使用V5編譯的工程&#xff0c;換成V6編譯器后居然報錯...雖然修改一下應該也可以正常編譯&…