骨子里的傲气 发表于 2016-4-23 09:14

【傲气每日一练 第 2 期】1~123456

请问 1~123456 之间所有 7 的倍数和末尾含 7 的数的和是?
答案在下方


















































































#include <stdio.h>
#include <stdlib.h>
int main()
{
        long i, j;
        j = 0;
        for ( i = 0; i <= 123456; ++i )
        {
                if ( i % 7 == 0 || i % 10 == 7 )
                        j = j + i;
        }
        ;
        printf( "%d\n", j );
       
        system( "pause" );
        return(0);
}

LaoJII 发表于 2016-4-23 09:34

#coding=utf-8


def demo():
        """calculate the answer"""
        sum=0
        t=range(1,123457)
        for i in t:
                if i%7==0 or i%10==7:
                        sum+=i
        print sum

demo()

LaoJII 发表于 2016-4-23 10:27

/*
calcucate the answer
*/

var sum=0;
function demo(k){
   if (k%7==0||k%10==7) {
                sum+=k;
        }
}

for (var i =1; i <=123456; i++) {
                demo(i);       
}

console.log(sum);

wangqiustc 发表于 2016-4-23 11:04

楼主你到底会多少种语言?

2809818948 发表于 2016-4-23 12:23

依旧来个js版

//根据规律可以减少循环次数,提高效率
function dowork(max,b){
if(b>9){return 'none';}
//获取基数的倍数存在次数
var p = parseInt(max/7) + (max % 7 ==0?0:1);
t=0;
for(var i=1;i<p;i++){
    t+=b*i;
}
//小于10的基数,每加10会存在一次,获取次数
p = parseInt(max / 10);
t2=0;
for(var i=0;i<p;i++){
   if(i%7!=0)
   t2 += b+10*i
}
return t+ t2;
}
dowork(123456,7)
//1741821309

LaoJII 发表于 2016-4-23 13:29

2809818948 发表于 2016-4-23 12:23
依旧来个js版

//根据规律可以减少循环次数,提高效率


不错的想法。你最后忘了输出了。console.log(dowork(123456,7));

阿志 发表于 2016-4-25 10:34

太神拉
小白表示看不懂
學習

Suny 发表于 2016-4-26 08:54

楼主真厉害,js,c,java倒是可能写的出这个

沧晓 发表于 2016-4-30 07:26

厉害,膜拜
页: [1]
查看完整版本: 【傲气每日一练 第 2 期】1~123456