C語言 數字河

2021-08-09 11:30:44 字數 1556 閱讀 6375



描述:

數字河中的乙個數n 的後繼數是n 加上其每位數字的和。例如,12345的後繼數是12360,因為12345+1+2+3+4+5=12360。如果數字河的第乙個數為k,我們就稱此數字河為river k。例如,river 480 代表序列,river 483 代表序列。

當兩個數字河有相同的元素時,我們稱這兩個數字河在此元素處相遇。例如,river 480 和river 483 在元素519處相遇。所有數字河都會和river 1, river 3 或river 9 相遇。程式設計計算給定的數字河最先與以上三條河流中的哪一條相遇,在何元素處相遇?

輸入:

輸入檔案包括多組測試用例,每個測試用例佔一行,以「0」標誌檔案結束,該行無需處理。

每行給定乙個整數 n ,(1<=n<=16384) ,即river n。

輸出:

對於每個測試用例輸出兩行,第一行為測試用例號,第二行輸出「first meets river x at y」。其中,y表示river n 最先遇到的river x中的最小元素值(x = 1,3,9)。

輸入樣例:

117520

輸出樣例:

case #1

first meets river 9 at 117

case #2

first meets river 1 at 107

答案如下:

includeint a[10001],b[10001],c[10001];//a,b,c陣列——1,3,9的數字河

int num[16385]; //乙個num[x]將有乙個river num[x]

int count=0;//記數——一共有多少個river num[x]方便迴圈

//以上為全域性變數,用來交換資料

void init();//初始化函式——向主函式輸入1,3,9的數字河並輸入測試用例

void river(int river[10001]);//計算數字河的函式

bool search(int num,int river[10001]);

/*將測試用例數字河中的乙個數與已經求出來的1,3,9的數字河中所有數進行比較,

需要用布林值當返回值交換資料*/

int main()

num1+=temp;

num[j]=num1;

/*如果當前num[j]不與3個數字河中任何乙個相遇,則捨棄當前num[j]

將num[j]的後繼數成為新的num[j],

在一次for迴圈中num[j]遍歷這個數字河的所有值直到相遇*/   }}

return 0;

}void init()

while(num[i-1]!=0);      

語句後面要加; 2.輸入i的值後i++,所以判斷的應為i-1項大小

}void river(int river[10001])

river[i]+=temp;

} }bool search(int num,int river[10001])

}return false;

}

如何用c語言解決數字河問題

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 數字河中的乙個數n 的後繼數是n 加上其每位數字的和。例如,12345的後繼數是12360,因為12345 1 2 3 4 5 12360。如果數字河的第乙個數為k,我們就稱此數字河為river k。例如,river 480 ...

C 語言 數字刪除

數字刪除 問題描述 給定乙個r位 r 1000 正整數c,去掉其中任意s個數字後將剩餘的數字按原來的左右順序組成乙個新的正整數,使得新組成的數的值最大。輸入形式 從標準輸入讀入n 1行,其中第一行是正整數s s 800 以下n行是正整數c的各位數字,以及可能的空格符和換行符。輸出形式 將計算結果寫到...

C語言 數字黑洞

演算法提高 數字黑洞 時間限制 1.0s 記憶體限制 256.0mb 問題描述 任意乙個四位數,只要它們各個位上的數字是不全相同的,就有這樣的規律 1 將組成該四位數的四個數字由大到小排列,形成由這四個數字構成的最大的四位數 2 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位...