当前位置: 代码迷 >> C语言 >> 一个编程题目,求解题思路,不要求过程,当然有过程更好,望各位高手不吝赐教!
  详细解决方案

一个编程题目,求解题思路,不要求过程,当然有过程更好,望各位高手不吝赐教!

热度:198   发布时间:2008-05-12 17:26:26.0
/********************************************************
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/

#include<stdio.h>
#include<string.h>
char out[100000]={0};

int main(void)
{
    int q=0;
    char sp[50];
    while (scanf(" %s%d", sp, &q)!=EOF)
    {
        char* ps=out;
        int s=0,l=0;
        strcpy(out, sp);
        ps += l = (int)strlen(sp);
        for (char* ps1=out;;++ps,++ps1)
        {
            int t = s*10+(*ps1-'0');
            s = t%q; *ps = t/q+'0';
            if (s==0 && strncmp(sp, ps-l+1, l)==0)
                break;
        }
        ps[1]=0;
        printf("%s\n", out+l);
    }
    return 0;
}


My solution

[color=white]
本帖最近评分记录
  • forever74 +3 还是应该从前往后推 2008-5-13 01:09
  • 死了都要C +8 看不懂也要加分``` 2008-5-12 21:15
2008-05-12 09:26:26
广陵绝唱

等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
  得分:0 
呵呵,这个帖子已经不是原来的含义了
~~~~~~~
    如:有一个新婚小媳妇发问:晚上我想炖块豆腐,怎么做啊?

    一个主厨多年的大婶:把豆腐切巴切巴扔锅里,放点调料,炖就行了;

    另一位大姐:弄几条泥鳅,活着和豆腐放在锅里,加上凉水,文火……

    一位营养专家:……

    一位高厨:……

    一位德高望重的据说会做满汉全席的老厨师:……


~~~~~~~~~~~~~~~~~~~~~

    其实这帖子真的很有深度,新手们看到了新颖的一题,锻炼了自己的思维方式;高手们从中看到了各种运算的应用及大数的运算,在他们的代码中,新手们也看到了完全不一样的算法。也算是各取所需吧。

    顶LZ,不过LZ好象发完帖子后便不再出现,也算是扫兴的一点缺憾吧。
本帖最近评分记录
  • qinxinhai +3 很黄,很暴力 2008-5-12 21:27
2008-05-12 10:27:34
StarWing83

来 自:湖北工业大学
等 级:贵宾
威 望:19
帖 子:3946
专家分:748
注 册:2007-11-16
  得分:0 
话说,不是很明白广陵的意思……反正我明白飞燕的代码了,我的程序只在p小于等于2位数才不会出错……不过懒得改了……等会儿写个伪代码出来就算了吧……
----------------解决方案--------------------------------------------------------
楼主可能明天来看答案....
广陵境界很高, 我居然什么都没看出来...可见既不是新手, 更不是高手..显然还没有入门...比如传真教的杨过, 能称之为新手么? 只有在他拜小龙女为师, 加入古墓派之后, 才能称之为新手...
我要继续努力啊...
我的小龙女在哪里?
----------------解决方案--------------------------------------------------------
废话水平果然高,废话境界更是高。不知所云

[color=white]
----------------解决方案--------------------------------------------------------
回复 33# 的帖子
呵呵,我的意思是:一道题,不同的人,能作出不同的代码,也能看出不同的深度来。

    也许我的表达有误,导致大家看得云里雾中。

    回家吃饭去……
----------------解决方案--------------------------------------------------------
不好意思现在才来看答案!
广陵绝唱,暂且称之为老师吧,你的编程方法对我启发很大,转头一想才知自己
的做法这末笨,补充一下2<=q<=p<=9.我忘打了,没想到各位还是做出来了.
我把广陵老师的方法改进了一下:
思路:假设原数是x,则x满足:x/10+p*pow(10,wei)=q*x;
wei表示x是几位数;
我的代码如下:
# include<stdio.h>
# include<math.h>
# define N 999999
void main()
{
long x;
int p,q,wei;
printf("Please enter two number 2<=q<=p<=9!\n");
scanf("%d%d",&p,&q);
for(x=p;x<N;x=x+10)
{
wei=log10(x)+1;
if(x/10+p*pow(10,wei)==x*q)
{printf("The number is :%ld",x);
break;}
}
if(x>=N)
printf("NOT found!\n");
getch();
}

问题:好象逻辑没错误,但不知为什么运行不出结果望各位指教!

再有看到各位高手编的程序,我受益非浅!我还须大大加油才能赶上你们!
----------------解决方案--------------------------------------------------------
等你看懂我的方法,你就知道更多

[color=white]
----------------解决方案--------------------------------------------------------
人说,飞燕的代码看懂了是享受,看不懂是难受……
别误会,是在夸你……
----------------解决方案--------------------------------------------------------
回复 37# 的帖子
看到上面某一楼就知道了,这个数字可以大到非常BT,比如3 1001,这个数字5004位,就小一点3 9也有44位数,你的N六位数,够么?
----------------解决方案--------------------------------------------------------