小蒟蒻的成长之路 4

· · 个人记录

试炼场1-3(2)

终于做完了级数求和,开始做小玉在游泳

小玉在游泳

小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。

废话(↑) 有用(↓)

已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。

做编程题读条件,先分清哪些是废话,哪些是有用的

这一题我总算没有重蹈覆辙(详见上一章),没有选错变量类型

但是!!!

#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
    double a,b=0;
    double c=2.0;
    cin>> a;
    while(1)
    {
        b=b+1.0/c;
        if(b>a)
        {
            cout << c;
            break;
        }
        c=c*0.98;
    }
}

看起来没有问题呀

且慢!!!

c是什么?

是小玉游的米数,不是游的秒数!!!

所以我应该增加一个变量:d

奉上AC代码

#include <iostream>
using namespace std;
int main()
{
    double a,b=0;
    double c=2.0;
    cin>> a;
    int d=1;
    while(1)
    {
        b=b+c;
        if(b>a)
        {
            cout << d;
            break;
        }
        c=c*0.98;
        d++;
    }
}

解决这道题,我喜笑颜开,然后继续做下一题

小鱼的航程(改进版)

有一只小鱼,它平日每天游泳 250 公里,周末休息(实行双休日),假设从周 x(1≤x≤7) 开始算起,过了 n(n≤10^6)天以后,小鱼一共累计游泳了多少公里呢?

这小鱼思想很先进啊,居然懂得实施双休日!

咳咳,不扯那些没用的了

这题有人说会炸int,但我仍然使用int,不是因为我算出了最大的数值,因为我不知道什么叫炸int

再来一句废话:int三个字母 double六个字母 long long九个字符,你说哪个省力?

这题起初我的思路是纯模拟,事实证明,我的思路半点不错

但是我的思路确实没有错,只是我的能力有限啊

#include <iostream>
using namespace std;
int main()
{
    int x;
    cin >> x;
    int y;
    cin >> y;
    int a=0;
    for(int i=1;i<=y;i++)
    {
        x++;
        if(x==8)
        {
            x=1;
        }
        if(x!=6&&x!=7)
        {
            a=a+250;
        }
    }
    cout << a;
}

60分

我很懵,这是什么情况???

嗯……

我自己做了下样例,发现没有问题

这是什么情况???

我看了看,顿时发现了问题

从周x开始,也包括这一天!

我先把x++就会导致不包括这一天!

于是我更改了代码

#include <iostream>
using namespace std;
int main()
{
    int x;
    cin >> x;
    int y;
    cin >> y;
    int a=0;
    for(int i=1;i<=y;i++)
    {
        if(x>=8)
        {
            x=x%7;
        }
        if(x!=6&&x!=7)
        {
            a=a+250;
        }
        x++;
    }
    cout << a;
}

100分,AC了!

然后是计数问题

试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在 1到11中,即在 1,2,3,4,5,6,7,8,9,10,11,中,数字1出现了4次。

当时我用一种蠢死了的办法做的

#include <iostream>
using namespace std;
int main()
{
    long a,b,n;
    cin >> a>>b;
    for(int i=1;i<=a;i++)
    {
        if(b!=0)
        {
            if(i%10==b)
            {
                n++;
            }
            if(i%100/10==b)
            {
                n++;
            }
            if(i%1000/100==b)
            {
                n++;
            }
            if(i%10000/1000==b)
            {
                n++;
            }
            if(i%100000/10000==b)
            {
                n++;
            }
            if(i%1000000/100000==b)
            {
                n++;
            }
            if(i%10000000/1000000==b)
            {
                n++;
            }
            if(i%100000000/10000000==b)
            {
                n++;
            }
            if(i%1000000000/100000000==b)
            {
                n++;
            }
        }
        if(b==0)
        {
            if(i%10==b&&i>=10)
            {
                n++;
            }
            if(i%100/10==b&&i>=100)
            {
                n++;
            }
            if(i%1000/100==b&&i>=100)
            {
                n++;
            }
            if(i%10000/1000==b&&i>=1000)
            {
                n++;
            }
            if(i%100000/10000==b&&i>=10000)
            {
                n++;
            }
            if(i%1000000/100000==b&&i>=100000)
            {
                n++;
            }
            if(i%10000000/1000000==b&&i>=1000000)
            {
                n++;
            }
            if(i%100000000/10000000==b&&i>=10000000)
            {
                n++;
            }
            if(i%1000000000/100000000==b&&i>=100000000)
            {
                n++;
            }
        }
    }
    cout << n;
}

尽管AC了,但是有待优化

关卡1-3通关了~~~

下一个,1-4,数组!