算法入门第二章

1.floor(x)返回不超过x的最大整数。为了减小误差影响,一般改成四舍五入,floor(x+0.5);
2.printf("%.2f", (double)clock() / CLOCKS_PER_SEC);
计时函数clock(),获得整个程序的运行时间,除以 CLOCKS_PER_SEC得到的值以秒为单位。不过前面要加time.h
3.输入结束符 :Windows:Ctrl+Z ,Linux:Ctrl+D
4.输入输出重定向:

freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);

input,output,是文件名字,r,w表示只读只写0.0
复制师傅滴:
编译选项_DEBUG的使用
DEBUG模式下输出到文件data.out,从data.in输入
不是DEBUG即忽略#define LOCAL,从而从标准输入输入,输出到标准输出
习题:
2-1

#include<stdio.h>
int main() {
    int a, b, c;
    for (int i = 100; i <= 999;i++) {
        a = i / 100;
        b = i / 10 % 10;
        c = i % 10;
        if (a * a*a + b * b*b + c * c*c ==i)
        {
            printf("%d\n", i);
        }
    }
    return 0;
}

2-2:啊~这个题,自己想了一个超级麻烦的方法还是师傅给改出来的0.0那还是贴一贴,被师傅帅到的瞬间orz 。

#include<stdio.h>
#include<algorithm>
using namespace std;
#pragma warning(disable:4996)
int main() {
    int a, b, c, t = 0 ;
    while (scanf_s("%d%d%d", &a, &b, &c))
    {
        t++; int m = 0x3f3f3f3f;
        for (int i = 0; i <= 100; i++)
            for (int j = 0; j <= 100; j++)
                for (int k = 0; k <= 100; k++)
                    if (a + 3 * i == b + 5 * j && a + 3 * i == c + 7 * k)
                        m = min(m,a + 3 * i);
        if (m<=100) printf("Case %d:%d\n", t, m);
        else    printf("no answer\n");
    }
    return 0;
}

下面是正确的

#include<iostream>
using namespace std;
int main() {
    int a, b, c, ans, cnt = 0;
    while (scanf("%d%d%d", &a, &b, &c)) {
        ++cnt;
        ans = 0;
        for (int i = 10; i < 100; ++i) {
            if (i % 3 == a && i % 5 == b && i % 7 == c) {
                ans = i;
                break;
            }
        }
        cout << "Case " << cnt << ": ";
        if (ans) cout << ans << endl;
        else cout << "No answer" << endl;
    }
}

扶我起来,我还能敲= =
2-3

#include<stdio.h>
int mian(){
int n, m;
    scanf("%d", &n);

    while (n>0)
    {
        m = 2 * n - 1;
        for (int j = 0; j<m; j++)
            printf("#");
            printf("\n");
            n--;
    }}

2-4

#include<stdio.h>
int main() {
     int m, n;

    while (scanf_s("%lld%lld",&n,&m))
    {
        double s = 0.0;
        if (m*n != 0) {
            for (int i = n; i < m + 1; i++)
            {

                s += 1.0/ (i*i);

            }
            printf("%.5f", s);
        }
        if (m==0&&n==0)
        {
            return 0;
        }
    }
    }

2-5+2-6好像木有自己写,看得师傅的
复制一下嘻嘻
2-5

#include<iostream>
using namespace std;
#pragma warning(disable:4996)
int main() {
    int a, b, c, cnt = 0;
    int sta[105], top = -1;
    while (scanf("%d%d%d", &a, &b, &c) && (a || b || c)) {
        ++cnt;
        top = -1;
        c += 2;
        while (c--)
            sta[++top] = a / b, a = a % b * 10;
        if(sta[top]>=5){
            int k = top-1;
            while (k>0 && sta[k] == 9)
                sta[k--] = 0;
            sta[k] += 1;
        }
        printf("Case %d: %d.", cnt, sta[0]);
        for (int i = 1; i < top; ++i)
            printf("%d", sta[i]);
        cout << endl;
    }
}

2-6

#include<iostream>
using namespace std;
int main() {
    int vis[10] = {};
    for (int a = 1; a <= 9; ++a) {
        vis[a] = 1;
        for (int b = 1; b <= 9; ++b) {
            if (vis[b]) continue;
            vis[b] = 1;
            for (int c = 1; c <= 9; ++c) {
                if (vis[c]) continue;
                vis[c] = 1;
                for (int d = 1; d <= 9; ++d) {
                    if (vis[d]) continue;
                    vis[d] = 1;
                    for (int e = 1; e <= 9; ++e) {
                        if (vis[e]) continue;
                        vis[e] = 1;
                        for (int f = 1; f <= 9; ++f) {
                            if (vis[f]) continue;
                            vis[f] = 1;
                            for (int g = 1; g <= 9; ++g) {
                                if (vis[g]) continue;
                                vis[g] = 1;
                                for (int h = 1; h <= 9; ++h) {
                                    if (vis[h]) continue;
                                    vis[h] = 1;
                                    for (int i = 1; i <= 9; ++i) {
                                        if (vis[i]) continue;
                                        vis[i] = 1;
                                        int A = a * 100 + b * 10 + c, B = d * 100 + e * 10 + f, C = g * 100 + h * 10 + i;
                                        if (A * 2 == B &&A * 3 == C)
                                            printf("%d %d %d\n", A, B, C);
                                        vis[i] = 0;
                                    }
                                    vis[h] = 0;
                                }
                                vis[g] = 0;
                            }
                            vis[f] = 0;
                        }
                        vis[e] = 0;
                    }
                    vis[d] = 0;
                }
                vis[c] = 0;
            }
            vis[b] = 0;
        }
        vis[a] = 0;
    }
} 

开始被这个长度吓到0.0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值