日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编程题集 (一)

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程题集 (一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程題集 (一)

  • 一個正整數序列,要求你把這個序列去重后按從小到大排序
  • 輸入兩個數輸出它們的最大公約數和最小公倍數

一個正整數序列,要求你把這個序列去重后按從小到大排序

題目: 一個正整數序列,要求你把這個序列去重后按從小到大排序 第一行包含一個正整數n,表示老師給出的序列有n個數。接下來有n行, 每行一個正整數k,為序列中每一個元素的值。(1 ≤ n ≤ 10^51 ≤ k ≤ n): 5 3 3 4 1 2 結果: 1 2 3 4 題目分析: 給你一個序列 讓你去重 之后 由小到大 排序 題目給的數的個數最大范圍 是 10^5 說明我們的時間復雜度要低才能 在程序運行時不超時

代碼如下

#include <stdio.h> int main(void) {int i, n, value;int a[100001]={0};scanf("%d", &n);while(scanf("%d", &value) != EOF) //while語句也可以用 for(i=0;i<n;i++){ {scanf("%d", &value);a[value] = value; a[value] = value;} }for(i = 1; i < n + 1; i++){if(a[i]){printf("%d ",a[i]);}}return 0; } // 有個技巧就是 下標和值是一樣的

輸入兩個數輸出它們的最大公約數和最小公倍數

題目: 輸入兩個數輸出它們的最大公約數和最小公倍數 例: 20 30 輸出 10 60 最大公約數概念: 最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個。 例: 2030 都有的最大公因子是 10 最小公倍數概念: 兩個或多個整數公有的倍數叫做它們的公倍數,其中除0以外最小的一個公倍數就叫做這幾個整數的最小公倍數。 例: 2030 最小公倍數是 60下面分析 最大公約數和最小公倍數 之間的關系 20=10*2 30=10*3 分析: (2*10*10*3) 一定是公倍數 20中有10 30中也有10102030的最大公約數 所以最小公倍數為 2*10*3=60 綜上分析: 最小公倍數=(數1*2/它們的最大公約數

代碼實現

#include<stdio.h> int main(void) {int a,b;int m,n;//m存放最大公約數n存放最小公共倍數int i=0;scanf("%d %d",&a,&b);if(a>=b){for(i=b;i>=1;i--){if( (a%i==0)&&(b%i==0) ){break;}}}else{for(i=a;i>=1;i--){if( (a%i==0)&&(b%i==0) ){break;}}}m=i;//最大公約數n=a*b/m;//最小公倍數printf("%d %d\n",m,n);return 0; } // 思路: 看兩個數哪個小,最大公約數一定小于等于那個小的數。 讓兩個數分別對那個小的數取余 當兩個余數都為零時就找到了,如果不滿足,讓最小的數減1接著找。 //用輾轉相除法實現 它的時間復雜度比上面那一種低 #include<stdio.h> int main(void) {int a,b;int m,n;//m存放最大公約數n存放最小公共倍數int temp=0;int i=0;scanf("%d %d",&a,&b);n=a*b;if(a>=b){temp=a%b;while(temp){a=b;b=temp;temp=a%b;}m=b;//最大公約數}else{temp=b%a;while(temp){b=a;a=temp;temp=b%a;}m=a;//最大公約數}n=n/m;//最小公倍數printf("%d %d\n",m,n);return 0; }

總結

以上是生活随笔為你收集整理的编程题集 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。