演算法課程設計數列構造

2022-12-05 03:36:04 字數 1618 閱讀 2558

數列構造

院系:電腦科學與工程學院

2023年 11 月 16日

1.問題描述

數列構造問題描述如下:

給定乙個正整數 k (3≥k≤15),把所有k的方冪及所有有限個互不相等的k的方冪之和構成乙個遞增的序列,例如,當k = 3時,這個序列是:

1,3,4,9,10,12,13……

該序列實際上就是:

30,31,30+31,32,30+32,31+32,30+31+32 ……

請你求出這個序列的第n項的值(用十進位制表述上)。

例如,對於k = 3,n = 100,正確答案應該是 981 。

2.問題分析

1,3,4,9,10,12,13,…

(該序列實際上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)

這道題關鍵要找規律

找出n和3的冪之間的規律

n=1時(換成2進製數為1),結果的值為等於 30

n=2時(換成2進製數為10),結果的值等於31,相當於

1*31+0*30 = 3

n=3時(換成2進製為11),結果的值等

1*30+1*31 = 4

n=4時(換成2進製為100),結果的值等於 1*32+0*31+0*30 = 9

……所以這道題的解題思路是:把n轉換成2進製數,然後把各個2進製數字上的數*3對應的(n-1)次方的積進行累加。

3.資料結構設計

數列是以k為底的若干個指數之和,n為數列的項數。用乙個陣列存放數值n轉換成的二進位制,設陣列為a[100],用for(int i=0;i<100;i++)計算a[i]=n%2,n = n/2,之後計算的結果 result = a[0]*30 +a[1]*31+a[2]*32+a[3]*33+a[4]*34 + …… 。由於n轉換成的二進位制的位數不容易確認,可以改用while迴圈,當n>0時進入迴圈。

利用 b=n%2,並設定乙個變數i,每迴圈一次i就加1一次。在迴圈裡面如果b為1,則result += pow(k,i),並且n = n/2。當跳出迴圈時就可以得出結果了。

4.演算法設計

int b,n,result,i=0;

while(n>0)

5.程式設計

數列構造程式**如下:

#include<>

#include<>

void main()

printf("k=%d m=%d result=%d\n",k,m,result);

result=0;

i=0;

} printf("press y/y to continue or n/n to quit.\n");

scanf(" %c",&select);

getchar();/*接收回車符號*/

if (select=='n'||select=='n') break;

}}6.執行結果

7.結論分析

對於k=3,n=100,表示的是3的方冪所組成的數列的第100項,而十進位制 100轉化為二進位制為 1100100 。數列的第100項可以表示為 :

1*36+1*35+0*34+0*33+1*32+0*31+0*30 =981

按y(或y)可以繼續鍵入k和n的值進行其他的數列的計算。

通道計數器課程設計報告

應用電子設計報告 學院 光電技術學院 班級 光資訊科學與技術 班 姓名 陶婉琳 200 032 劉春 200 032 指導老師 劉心田蔣守光費紹敏 完成時間 2011.06.07 設計時間 2011 04 20 2011 06 15 通道計數器的設計報告 課題名稱 通道計數器的設計 內容摘要 紅外反...

建築構造課程設計試卷

中南大學考試 考核 試卷 2016 2017學年第二學期 課程 建築構造課程設計學時 1周 考試形式 課程設計卷 專業年級 建築學15級 任課老師 任倩嵐 吳韜 一 目的要求 通過本課程設計,進一步理解建築設計的基本原理,了解和掌握民用建築施工圖設計的程式 內容和深度,使學生對施工圖的性質和內容有較...

課程設計數值轉換和紙牌遊戲

編號江西理工大學 資料結構課程設計報告 班級 網路112班 學號 14 姓名 塗平平 時間 2012年12月31日 2012年1月11日 指導教師 塗燕瓊井福榮 2013年01月 目錄 一 課程設計題目 二 需求分析 三 概要設計 四 詳細設計 五 除錯分析 六 使用者使用說明 七 測試結果 八 附...