zoukankan      html  css  js  c++  java
  • Project Euler 43 Sub-string divisibility


    题意:

    1406357289是一个0至9全数字数,因为它由0到9这十个数字排列而成;但除此之外,它还有一个有趣的性质:子串的可整除性。记d1是它的第一个数字,d2是第二个数字,依此类推,我们注意到:

    • d2d3d4=406能被2整除
    • d3d4d5=063能被3整除
    • d4d5d6=635能被5整除
    • d5d6d7=357能被7整除
    • d6d7d8=572能被11整除
    • d7d8d9=728能被13整除
    • d8d9d10=289能被17整除

    找出所有满足同样性质数,并求它们的和。


    /*************************************************************************
        > File Name: euler043.c
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年06月27日 星期二 10时36分23秒
     ************************************************************************/
    
    #include <stdio.h>
    #include <inttypes.h>
    #include <algorithm>
    
    bool IsSubStringDivisibility (int32_t *num) {
    	int32_t p[7] = { 2 , 3 , 5 , 7 , 11 , 13 , 17 };
    	int32_t tmp = 0;
    	for (int32_t i = 1 ; i < 8 ; i++) {
    		tmp = num[i] * 100 + num[i + 1] * 10 + num[i + 2];
    		if (tmp % p[i -1])	return false;
    	}
    	return true;
    }
    int32_t main() {
    	int32_t num[10];
    	int64_t sum = 0 , tmp;
    	for (int32_t i = 0 ; i < 10 ; i++)	num[i] = i;
    	do {
    		if (IsSubStringDivisibility(num)) {
    			tmp = 0;
    			for(int32_t i = 0 ; i < 10 ; i++){
    				tmp = tmp * 10 + (int64_t)num[i];
    			}
    			sum += tmp;
    		}
    	}while (std::next_permutation(num , num + 10));
    	printf("%"PRId64"
    ",sum);
    	return 0;
    }
  • 相关阅读:
    7z usecaes
    最新状态
    ABAP 常用FUNCTION (最近工作中用到的)
    又是一个星期五
    阿牛
    自我定位的重要性
    smortform 创建
    换个角度想或许不一样
    为什么喜欢跟男生聊天小小分析
    BDC 代码设置
  • 原文地址:https://www.cnblogs.com/WArobot/p/7084006.html
Copyright © 2011-2022 走看看