Crazy Number

Crazy Number

Time Limit: 1000MS  Memory Limit: 65536KB
Problem Description

给定一个整数 n ,把 n 分解成从 1 开始连续的若干个整数(最大为 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

输入数据有多组(数据组数不超过 2600),到 EOF 结束。

对于每组数据,输入一行,包含一个整数 n (0 <= n <= 2575)。

Output

对于每组数据:

  • 第一行输出 ”Case #t:”,t 从 1 开始计数。
  • 接下来输出分解的结果,每个结果占一行。特别地,当 n = 0 时,分解结果仅在一行中输出一个 "0"。
Example Input
1
9
46
55
0
Example 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:
0
Hint
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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值