| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4928 人关注过本帖
标题:数字折叠相加游戏
只看楼主 加入收藏
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
数字折叠相加游戏
数字折叠相加是指将n位正整数,从中间折叠,并相加的过程。
例如:数字 123456 =〉 123+654 = 777。
新的数字 777 =〉 77 +70 =147 (注意:n为奇数的折叠,最中间的处理方式)
新的数字 147 =〉 14 +70 =84
新的数字 84 =〉 8+4 =12
新的数字 12 =〉 1+2 =3
最后得到数字3。

Input

一个正整数。(正整数小于1000000)

Output

输出经过每次折叠相加计算后得到的数值和最终数据。 每行一个。

Sample Input


123456

Sample Output


777
147
84
12
3

求哥哥们给点思路,还有就是奇数位的处理方式没这么看懂。
搜索更多相关主题的帖子: 数字 正整数 哥哥 
2013-05-21 15:09
我叫沃恩
Rank: 12Rank: 12Rank: 12
来 自:Asia
等 级:贵宾
威 望:10
帖 子:1234
专家分:3865
注 册:2013-3-29
收藏
得分:4 
我觉得是数字折叠相加是这样运算的:123456折叠后变为:
123
654  然后这两个数相加!
当n为奇数时,就是整数的位数为奇数:
147折叠后:
14
70
然后相加!直到其为一位数!!

因为我是菜鸟,所以应该被骂! 细节+坚持=成功!
2013-05-21 15:50
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:0 
你想要做什么~

C++菜鸟
2013-05-21 16:02
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:8 
这是我的,有点麻烦,你自己可以改下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,j;
    scanf("%d",&i);
    while(i>=10)
    {
        int count=0,c=1;
        j=i;
       while(i)
       {
        i/=10;
        count++;
       }
      if(count%2)
      {
        for(int k=0;k<(count/2+1);k++)
        {
            c=c*10;
        }
      }
      else
      {
          for(int k=0;k<count/2;k++)
        {
            c=c*10;
        }
      }
    i=j/c+j%c;
    }
    printf("%d",i);
    return 0;
}


Maybe
2013-05-21 16:32
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
谢谢了,不过好像要每次叠加的数据,我再试试看
2013-05-21 17:43
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:8 
程序代码:
#include "stdafx.h"

int main(int argc, char* argv[])
{
    int i, j, n = 123456;
    int sa, sb, a[7] = {0};

    while (n > 10)
    {
        a[0] = sa = sb = 0;
        while (n > 0)
        {
            a[ ++a[0] ] = n % 10, n /= 10;
        }
        for (i = 1, j = a[0];i < j;++i, --j)
        {
            sa = 10 * sa + a[i];
            sb = 10 * sb + a[j];
        }
        if (i == j)
        {
            sa = 10 * sa + a[i], sb *= 10;
        }
        n = sa + sb;
        printf("%d\n", n);
    }
    return 0;
}


[fly]存在即是合理[/fly]
2013-05-21 18:22
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
貌似....还是有点小问题
2013-05-21 18:56
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
回复 5楼 孤寂的小菜
谢谢啊,写得不错,就是数大了点就有点问题了
2013-05-21 21:52
kaboul
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-8-4
收藏
得分:0 
static int MyPow(int nData);

static int MyPow(int nData)
{
    int nRet = 1;
    int i = 0;

    for(i = 0; i < nData; i++)
    {
        nRet = nRet * 10;
    }

    return nRet;
}

static int CheckNumber(int nInput)
{
    int nRet = 0;
    int i = 0;
    int number1 = 0;
    int number2 = 0;

    for(i = 5; i >= 0; i--)
    {
        if((nInput / MyPow(i)) != 0)
        {
            break;
        }
    }

    switch(i)
    {
        case 5:
            number1 = (nInput / 1000);
            number2 = (nInput % 1000);
            break;
        case 4:
            number1 = (nInput / 100);
            number2 = (nInput % 100) * 10;
            break;
        case 3:
            number1 = (nInput / 100);
            number2 = (nInput % 100);
            break;
        case 2:
            number1 = (nInput / 10);
            number2 = (nInput % 10) * 10;
            break;
        case 1:
            number1 = (nInput / 10);
            number2 = (nInput % 10);;
            break;
        case 0:
            number1 = (nInput % 10);
            number2 = 0;
            break;
        default:
            break;
    }

    nRet = number1 + number2;

    printf("number1:%d,number2:%d,nRet:%d\r\n",number1,number2,nRet);

    return nRet;
}

int main(int argc,char *argv[])
{
    int nInput;
    int nOutput;

    printf("\r\n please input a number < 1000000 \r\n");
    scanf("%d",&nInput);

    do
    {
        nOutput = CheckNumber(nInput);
        nInput = nOutput;

    }while(nOutput >= 10);

    return 0;
}
2013-05-21 23:04
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
谢谢,继续求支招
2013-05-22 13:43
快速回复:数字折叠相加游戏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012986 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved