• 蓝桥杯训练7


    给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。

    示例:

    输入: 13
    输出: 6 
    解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。
    

    来源:力扣(LeetCode)
    AC的C

    int countDigitOne(int n) {
        int num=n,s=0;
        long i=1;
        while(num){              //分别计算个、十、百......千位上1出现的次数,再求和。
            if(num%10==0)
                s=s+(num/10)*i;
            if(num%10==1) 
                s=s+(num/10)*i+(n%i)+1;
            if(num%10>1) 
                s=s+ceil(num/10.0)*i;//ceil()返回大于或者等于指定表达式的最小整数
            num=num/10;
            i=i*10;
        }    
    return s;
    }
    

    java

    import java.util.Scanner;
    
    public class Shuziyi {
    
    	public static void main(String[] args) {
    		@SuppressWarnings("resource")
    		Scanner in = new Scanner(System.in);
    		int n=in.nextInt();
    		int count = 0;
    		long l=0,cur=0,h=0,num=1;
    		while(n/num !=0){
    	        l=n%num;
    	        cur=(n/num)%10;
    	        h=n/(num*10);
    	        if(cur<2){
    	            count += h*num;
    	            if(cur==1){
    	                count += l+1;
    	            }
    	        }else{
    	            count += (h+1)*num;
    	        }
    	        num=num*10;
    	    }
    	    System.out.println(count);
    	}
    }
    

    python

    class Solution:
        def countDigitOne(self, n):
            cnt, i = 0, 1
            while i <= n: # i 依次个十百位的算,直到大于 n 为止。
                cnt += n // (i * 10) * i + min(max(n % (i * 10) - i + 1, 0), i)
                i *= 10
            return cnt
    

    核桃的数量

    小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:

    1. 各组的核桃数量必须相同
    2. 各组内必须能平分核桃(当然是不能打碎的)
    3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)
    

    程序从标准输入读入:
    a b c
    a,b,c都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c<30)

    程序输出:
    一个正整数,表示每袋核桃的数量。

    例如:
    用户输入:

    2 4 5
    

    程序输出:

    20
    

    再例如:
    用户输入:

    3 1 1
    

    程序输出:

    3
    

    C

    #include<stdio.h>
    int main(){
        int a,b,c,i=1;
        scanf("%d %d %d",&a,&b,&c);
        while(i++>0){
       // for(i=0;;i++){
          if(i%a==0 && i%b==0 && i%c==0){
                printf("%d",i);
                break;
            }
        }
        return 0;
    }
    

    Java

    import java.util.Scanner;
    /*
     * 1.两两找最大公约数 ;
     * 2.再找出最小公倍数求积*/
    public class Hetao {
    
    	public static void main(String[] args) {
    		Scanner in =new Scanner(System.in);
    		int a = in.nextInt();
    		int b = in.nextInt();
    		int c = in.nextInt();
    		int i=1;
    	    while(i++>0){
    	      if(i%a==0 && i%b==0 && i%c==0){
    	            System.out.print(i);
    	            break;
    	        }
    	    }
    	}
    }
    

    python

    a,b,c=map(int,input().split())
    list=[]
    if a<30 and b<30 and c<30:
        sum=a*b*c
        for i in range(1,sum+1):
            if i%a==0 and i%b==0 and i%c==0:
                list.append(i)
    print(list[0])
    
    欢迎查阅
  • 相关阅读:
    linux下安装redis 3.2.1
    redis 登入,检查
    断写了一年的博客~~
    前端面试的感想
    http和web缓存
    http请求报文和响应报文(2)
    http请求报头和响应报头(1)
    网络编程(一)
    防恶意解析,禁止用IP访问网站的Apache设置 修改 httpd.conf 实现
    About English Web Site Font
  • 原文地址:https://www.cnblogs.com/gh110/p/12158139.html
Copyright © 2020-2023  润新知