刘汝佳算法竞赛入门经典 第二单元习题答案自编

欢迎交流讨论!

@2-1
#include <fstream>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(){
    int n;
    while(fin>>n){
        int count = 0;
        //计算位数
        while(n){
            count++;
            n /= 10;
        }
        fout << count << endl;
    }
    return 0;
}

@2-2
#include <fstream>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(){
    int n;
    for(int i = 100; i < 1000; i++){
        int A = i/100, B = i%100%10, C = i % 10;
        if(A*A*A+B*B*B+C*C*C == i)
            fout << i << "^_______________________________________________________^"<< endl;
        else fout << "it is not~" << endl;
    }
    return 0;
}

@2-3
#include <fstream>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(){
    int a, b, c, i;
    while(fin >>a>>b>>c){
        for(i = 10; i <= 100; i++){
            if(i%3 == a && i%5==b && i%7==c){
                fout << i << endl;
                break;
            }
        }
        if(i == 101) fout << "No answer" << endl;
    }
    return 0;
}

@2-4
#include <fstream>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(){
    int n;
    for(int i = 1; i <=5; i++){
        //输出空格0-4个
        for(int j = 1; j <= i-1; j++) fout << " ";
        //输出# 11-2i
        for(int k = 1; k <= 11-2*i; k++) fout << "#";
        fout << endl;
    }
    return 0;
}

@2-5
#include <fstream>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");

int main(){
    int n;
    while(fin >> n){
        int a[n], m, i = 0, count = 0;
        while(i < n) fin >> a[i++];
        fin >> m;
        for(i = 0; i < n; i++){
            if(a[i] < m) count++;
        }
        fout << count << endl;
    }
    return 0;
}

@2-6
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");

int main(){
    int n;
    while(fin >> n){
        double count = 0;
        int i = 1;
        while(i <= n) count += 1.0/i;
        fout << fixed<< setprecision(3) << count << endl;
    }
    return 0;
}

@2-7
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");

int main(){
    double count = 0;
    int i = 1, flag = -1;

    while(1.0/i >= 1.0e-6){
        flag *= -1;//flag取反,使每一项变符号
        double temp = 1.0/i;
        count += flag * temp;
        i += 2;
    }
    fout << count << endl;
    return 0;
}

@2-8
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(void){
    long long  n, m;
    while(fin >> n >> m){
        long long loop = n;
        double sum = 0.0;
        while(loop <= m){
            double add = 1.0/(loop*loop);
            sum += add;
            loop++;
        }
        fout << fixed << setprecision(5)<< sum << endl;
    }
    return 0;
}

@2-9
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(void){
    int a, b, c;
    while(fin >> a >> b >> c){
        fout << fixed << setprecision(c) << a*1.0/b << endl;
    }
    return 0;
}

@2-10
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("aplusb.in");
ofstream fout("aplusb.out");
int main(void){
    int abc, def, ghi, hash[10];
    for( abc = 123; abc <= 329; abc++){
        memset(hash, 0, sizeof(hash));
        def = 2*abc, ghi = 3*abc;
        hash[def/100] = 1, hash[def%100/10] = 1, hash[def%10] = 1;
        hash[abc/100] = 1, hash[abc%100/10] = 1, hash[abc%10] = 1;
        hash[ghi/100] = 1, hash[ghi%100/10] = 1, hash[ghi%10] = 1;

        int countOne = 0;
        for(int i = 1; i < 10; i++){
            if(hash[i] == 1)
                countOne++;
        }
        if(countOne == 9)
            fout << "abc:def:ghi is:\n" << abc <<":"<< def << ":"<< ghi <<endl;
    }
    return 0;
}

  

时间: 2024-10-05 12:07:17

刘汝佳算法竞赛入门经典 第二单元习题答案自编的相关文章

刘汝佳算法竞赛入门经典 第四单元习题答案自编

第四章小问题集锦 以上是我这一章课后题思考的流程,有错误和不严谨地方请直接指出! 1.解方程组 任务一:使用assert宏,解不唯一时异常退出 #include <stdio.h> //x=(ce-bf)/(ae-bd), y=(cd-af)/(bd-ae) int solve(double a, double b, double c, double d, double e, double f){ assert(a*e != b*d); ... } int main(){ double a,b

《刘汝佳算法竞赛入门经典》第五章 高精度

Integer Inquiry 输入几行大整数, 求他们的和吗以0表示输入结束

《刘汝佳算法竞赛入门经典》第五章 数论

Skew Binary 斜二进制 斜二进制的每位为0, 或 1, 最低位可以为2. 第k位的...代表 2k+1 -1,给出一个斜二进制数,把他转换成十进制数.正常模拟就好 1 #include <cstdio> 2 #include <cstring> 3 char A[1000]; 4 5 int main() { 6 while (scanf("%s", A) != EOF) { 7 if (A[0] == '0') break; 8 int len =

《刘汝佳算法竞赛入门经典》第五章 排序检索

Master-MindHints

《刘汝佳算法竞赛入门经典》 第五章 字符串

Palindromes 几个if语句判断一下就好了

《刘汝佳算法竞赛入门经典》第五章 简单几何计算

The Other Two Trees 另两棵树 没看懂题目,搜了下题解,都是直接给出了简化后的题意和解法...自己再读读原题意吧

算法竞赛入门经典 第二版 1-3答案

挂完月考又滚回来玩OI了,对于书中前几章例题,没有答案还是比较慌,找了许久也没用什么完全符合的.其中不错的有一篇写下来看看 http://wenku.baidu.com/link?url=Ofu2LHxnKm838nW3XtLBX9cGQcgOAqPIgqdg0vhOc9X0M4cSWnL_yCjd_DF3O2k9O4kAHfTyHP6nxFr2wiGBM7n6Wj3AL2LLoP06ecNEGQC 不得不吐槽这文库的下载要求,没心思去弄.这库中答案有少许偏差,不过还在接受范围之内. 对于一些,

《算法竞赛入门经典第二版》 P35 习题2-4 子序列的和(subsequence)

/* <算法竞赛入门经典第二版> P35 习题2-4: 输入两个正整数 n < m < 10^6,输出 (1/n)^2 + 1/(n+1)^2 +……+ 1/m^2,保留5位小数. 输入包含多组数据,结束标志为 m=n=0. 有错欢迎指出^_^ */ #include<stdio.h> int main() { int m,n,i,j=1; while(scanf("%d%d",&m,&n) != EOF) { double sum

算法竞赛入门经典第二版第三章习题

写这个的原因是看到一位大神的习题答案总结,于是自己心血来潮也想写一个这个,目的主要是督促自己刷题吧,毕竟自己太弱了. 习题3-1 得分 UVa 1585 大致就是设置一个变量记录到当前为止的连续的O的数量,碰到X就变0,水题. #include<stdio.h> #include<ctype.h> #include<string.h> char s[90]; int main(void) { int length,n,sum,num; scanf("%d&qu