Crazy Number
生活随笔
收集整理的這篇文章主要介紹了
Crazy Number
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Crazy?Number
Time Limit:?1000MS?Memory Limit:?65536KB Submit?Statistic?DiscussProblem Description
給定一個整數(shù)?n ,把 n 分解成從 1 開始連續(xù)的若干個整數(shù)(最大為 9)及 n' 的和,即?n = 1 + 2 + 3 + ... + 9 + n',直到 n’ 為 0 時停止分解。
例如:給定 n = 9 時:
- 第一次分解:9=1+2+3+n'(9 < 1+2+3+4,因此最多只能分解為 1+2+3+n',剩余值 n' 作為下一次分解的 n)。
- 第二次分解:3=1+2。
Input
輸入數(shù)據(jù)有多組(數(shù)據(jù)組數(shù)不超過 2600),到 EOF 結束。
對于每組數(shù)據(jù),輸入一行,包含一個整數(shù) n?(0 <= n <= 2575)。
Output
對于每組數(shù)據(jù):
- 第一行輸出 ”Case?#t:”,t 從 1 開始計數(shù)。
- 接下來輸出分解的結果,每個結果占一行。特別地,當 n = 0 時,分解結果僅在一行中輸出一個?"0"。
Example Input
1 9 46 55 0Example Output
Case #1: 1=1 Case #2: 9=1+2+3+n' 3=1+2 Case #3: 46=1+2+3+4+5+6+7+8+9+n' 1=1 Case #4: 55=1+2+3+4+5+6+7+8+9+n' 10=1+2+3+4 Case #5: 0Hint
Author
「2016級《程序設計基礎(B)I》期末上機考試-第一場」MLE_kenan#include <stdio.h>
#include <stdlib.h>
int main()
{
? ? int t=1,n,i,s;
? ? while(scanf("%d",&n)!=EOF)
? ? {
? ? ? ? if(n==0)
? ? ? ? ? ? printf("Case #%d:\n0\n",t);// n有兩種情況 認真讀題,把示列搞清楚,情況分清楚
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? s=0;
? ? ? ? ? ? printf("Case #%d:\n",t);
? ? ? ? ? ? while(1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("%d=",n);
? ? ? ? ? ? ? ? for(i=1; s+i<=n&&i<=9; i++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? s=s+i;
? ? ? ? ? ? ? ? ? ? if(s<=n)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? if(i==1)
? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("%d",i);
? ? ? ? ? ? ? ? ? ? ? ? else printf("+%d",i);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(s==n) ?//若n==9時,3=1+2時結束
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if(s<=n) 當n==9時,第一趟完了以后,s=6
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? n=n-s; ?//n需要更新,緊接著輸出+n',明白下一步
? ? ? ? ? ? ? ? ? ? printf("+n'\n");
? ? ? ? ? ? ? ? ? ? s=0; //清零操作,下一組也是由0開始
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }//這里為break跳出的地方
? ? ?t++;
? ? }
? ? return 0;
}
總結
以上是生活随笔為你收集整理的Crazy Number的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 卡顿优化 3 布局优化
- 下一篇: 这篇文章告诉你pdf转图片软件有哪些,建