题解 | #将真分数分解为埃及分数#

将真分数分解为埃及分数

https://www.nowcoder.com/practice/e0480b2c6aa24bfba0935ffcca3ccb7b

//只说输出成埃及分数,没说一定得不一样
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
    int a, b;
    char str[10];
    while (scanf("%s", str) != EOF ) {
        int len = strlen(str);
        int fs[2] = {0};
        int x = 0, z = 0;
        for (int i = len-1; i >= 0; i--) {
            if (str[i] == '/') {
                x++;
                z = 0;
                continue;
            }
            fs[x] = (str[i] - '0')* pow(10, z++) + fs[x];
            // printf("%d\n",fs[0]);
            // printf("%d\n",fs[1]);
        }
        //printf("%d/%d\n",fs[0],fs[1]);
            for (int i = 0; i < fs[1] - 1; i++) {
                printf("1/%d+", fs[0]);
            }
            printf("1/%d\n", fs[0]);
        }

    }




    /*运算超时
    #include <math.h>
    #include <stdio.h>
    #include <string.h>
    int t = 2;
    float y = 0.5;


    void aj(float a) {
        if ((a - y) > 0) {
            a = a - y;
            //printf("%f\n",y);
            printf("1/%d+", t);
            t++;
            y = pow(t, -1);
            aj(a);
        } else if ((a - y) < 0) {
            t++;
            y = pow(t, -1);
            aj(a);
        } else if ((a - y) == 0) {
            printf("1/%d\n", t);
            t = 2;
            y = 0.5;
            return;
        }


    }

    int main() {
        char str[10];
        while (scanf("%s", str) != EOF ) {
            int len = strlen(str);
            float fs[2] = {0};
            int x = 0, z = 0;
            for (int i = 0; i < len; i++) {
                if (str[i] == '/') {
                    x++;
                    z = 0;
                    continue;
                }
                fs[x] = (str[i] - '0') + fs[x] * pow(10, z++);
                // printf("%d\n",fs[0]);
                // printf("%d\n",fs[1]);
            }
            //printf("%d/%d\n",fs[0],fs[1]);
            float num = fs[0] / fs[1];

            aj(num);


        }


        return 0;
    }**/

全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务