描述:
數字河中的乙個數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 #1first 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 將組成該四位數的四個數字由小到大排列,形成由這四個數字構成的最小的四位...