首页 > 试题广场 >

牛牛做水题

[编程题]牛牛做水题
  • 热度指数:1300 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛喜欢做题。但他不喜欢做难题,喜欢做水题。
对于一个题号为的题而言,题目的难度为的所有因子之和除以。牛牛认为难度小于2的题目都是水题。
例如:
编号为25的题目,其难度为(1+5+25)/25=1.24<2,因此这道题是水题。
编号为28的题目,其难度为(1+2+4+7+14+28)/28=2,因此这道题不是水题。
编号为30的题目,其难度为(1+2+3+5+6+10+15+30)/30=2.4>2,因此这道题也不是水题。
牛牛拿到了一个共有道题目的题单,上面的题号为1、2、3、...、。牛牛把上面所有的水题刷了个遍。每做一道编号为的水题,牛牛可以获得的快乐指数。
牛牛想知道,自己一共能获得多少快乐指数?
示例1

输入

4

输出

10

说明

题号为1到4的四道题都是水题,所以牛牛全部做了,快乐指数为1+2+3+4=10
示例2

输入

282

输出

30101

备注:



int JugementWaterNumber(int x)
{
    if(x==1)
    {
        return 1;
    }
    unsigned int sum=1+x;
    int i=2;
    for(i=2;i<=x/2;i++)
    {
        if(x%i==0)
        {
            sum+=i;
        }
    }
   if((sum/x)<2)
    return  1;
    return 0;
}

int doQuestion(int n ) 
{
    int i=1;
    int sum=0;
    for(;i<=n;i++)
    {
        if(JugementWaterNumber(i)==1)
        {
            sum+=i;
        }
    }
    // write code here
    return sum;
}
发表于 2021-07-21 20:37:44 回复(0)
int doQuestion(int n) {
        //1默认为水题,故res直接加1,初始从2开始
        int i = 2, res = 1;
        while (i <= n) {
            int l = 1, r = i;
            int sum = 0;
            while(l < r) {
                //整除时说明l是i的因子,将l和i / l加到和中,同时将r范围缩小
                if (i % l == 0) {
                    sum += l;
                    if (l != i / l) sum += i / l;
                }
                r = i / l;
                l++;
            }
            if (sum < 2 * i) res += i;
            i++;
        }
        return res;
    }
编辑于 2021-06-28 15:04:50 回复(0)
import math
class Solution:
    def doQuestion(self , n ):
        # write code here
        res=0
        for i in range(1,n+1):
            index=[]
            for j in range(1,int(math.sqrt(i))+1):
                if i%j==0:
                    index.append(j)
                    if j!=i/j:
                        index.append(i/j)
            if sum(index)/i<2:
                res+=i
        return res
发表于 2021-03-18 16:23:01 回复(0)
public int doQuestion (int n) {
        
        // write code here
        if(n==1){
            return 1;    
        }
        //快乐指数count
        int count = 1;
        for(int i=2; i<=n; i++){
            //约数之和
            int sum = 0;
            for(int j=1; j<=i; j++){
                //先計算約數和
                if(i%j == 0){
                    sum += j;
                }
            } 
            float sumF = (float)sum;
            //計算是否水題
            if(sumF/i< 2){
                count += i;
            }
        }
        return count;
        
        
    }

发表于 2021-02-25 14:55:22 回复(0)
    public int doQuestion(int n) {
        int sum;
        int res = 0;
        for (int i = 1; i <= n; i++) {// 对1-n的每一个数进行处理
            // 重置当前题目的因子和
            sum = 0;
            for (int j = 1; j <= i; j++) {// 计算因子和的循环
                if (i % j == 0)
                    sum += j;
            }
            if (sum / i < 2) {// 水题
                res += i;
            }
        }
        return res;
    }

发表于 2021-02-06 11:02:35 回复(0)

问题信息

难度:
5条回答 1732浏览

热门推荐

通过挑战的用户

查看代码