• 【ACM打卡】ZOJ 1067 1115


    1067  

    输入16组三维坐标(二维数组,for循环至16);

    输入其他R G B(直到三个值为-1 -1 -1结束,break跳出循环),利用假循环while(1)输出(里面嵌套for循环判断最短距离的点)结果。


    1115

    输入一个整数,各个位数相加,直至最后为个位数。

    这是我第一次在ZOJ中使用 函数 以及 递归 的思想。但是还有很多地方不明白,如(int)(void)()三者区别,有时候就是无法编译;string.h(strlen为长度)与string(length为长度)的区别。以后继续努力。

    问题:

    int main(void)
    {
        int a;
        while(cin>>a&&a!=0){
        cout<<digitroot( a)<<endl;
        }
    }

    数字可能很大,这样的主函数无法AC,应该用字符串来输入(借鉴了别人的代码,然后AC)。

    int main(void){

        string s;
        while(cin>>s&&s[0]!='0'){
            int a = 0;
            for(int i=0; i<s.length(); i++){
                a = a + s[i] -'0';                            //char转换为int
            }
            cout<<digitroot(a)<<endl;             //digitroot函数
        }

    }


    by the way,今天的题看起来都很简单,最后都是借鉴了别人的经验才通过的。以后不要所有东西都定义为int,有时候数组、字符串是不错的选择。微笑微笑微笑


    1067

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    
    int a[16][3];
    int main(){
        int i;
        int R,G,B;
        int m,n,k;
        for(i=0;i<16;i++){
            cin>>a[i][0];
            cin>>a[i][1];
            cin>>a[i][2];
        }
        while(1){
            int m=-1,n=-1;  //利用-1判断,0不可以(不知道为什么)
    
            cin>>R>>G>>B;
            if(R==-1&&G==-1&&B==-1) break;
    
            for(i=0;i<16;i++){
                m=(R-a[i][0])*(R-a[i][0])+(G-a[i][1])*(G-a[i][1])+(B-a[i][2])*(B-a[i][2]);
                if(n==-1||m<n){
                    n=m;
                    k=i;
                }
            }
            printf("(%d,%d,%d) maps to (%d,%d,%d)",R,G,B,a[k][0],a[k][1],a[k][2]);
            printf("
    ");
    
        }
    
    }
    


    1115

    #include<iostream>
    #include<string>
    using namespace std;
    int digitroot( int a)
    {
        int dr = 0;
        while( a > 0)
        {
        dr += a%10;                                //dr累计所有位数求和
        a /= 10;
        }
        if( dr > 9)
        return digitroot( dr);                     //递归思想,若不为个位数,继续函数
        return dr;
    }
    
    int main(void){
        string s;
        while(cin>>s&&s[0]!='0'){
            int a = 0;
            for(int i=0; i<s.length(); i++){
                a = a + s[i] -'0';                //char转换为int
            }
            cout<<digitroot(a)<<endl;             //digitroot函数
        }
    }
    


  • 相关阅读:
    数梦工场:新思维、新技术下的互联网+政务
    计算成就价值_数据实现梦想——达科在DT时代转型历程的分享
    AliSQL开源功能特性
    mysql 索引的使用
    sql经典面试题
    数据库理论知识点
    sql语句面试练习
    数据库范式的选择使用
    sql常用语句
    数据库范式
  • 原文地址:https://www.cnblogs.com/iriswang/p/11084678.html
Copyright © 2020-2023  润新知