zoukankan      html  css  js  c++  java
  • hdu 2212

    1简单的思维问题 各个位上阶乘的和 要和这个数相匹配 这样才能得到正确的解。各个位上阶乘的和 是最大是9*9!这样来求解。999999999   9最大的各个位上的阶乘的和为3265920=9*9

    只需要遍历到上面这个数就可以了,不用遍历到21亿,否则会超时

    只有四个数满足条件(此题为水题)

    #include<stdio.h>
    int a[11];
    int fun(int n)  //1-9的阶乘存起来
    		{
    	int i;
    	int sum = 1;
    	for (i = 1; i <= n; i++)
    		sum *= i;
    	return sum;
    
    }
    
    int main() {
    	a[0] = 1;  //0!,0的阶乘是1
    	int i, num, ji, sum;
    
    	for (i = 1; i <= 9; i++) {
    		a[i] = fun(i);  //a[]用于保存各个自然数的阶乘
    	}
    
    	//直接进行遍历
    	//3265920是9个9!
    	for (i = 1; i <= 3265920; i++) {
    		num = i;
    		sum = 0;
    		while (num) {
    			ji = num % 10;//去末位的数字
    			sum += a[ji];
    			num /= 10;//取下一位的数字
    		}
    		if (i == sum) {
    			printf("%d
    ", i);
    		}
    	}
    }
    

  • 相关阅读:
    路由器的配置及使用
    OSI与TCP/IP网络模型
    IP地址
    C++中的虚函数
    虚基类
    【idea】jrebel
    JSON(来自ww3school)
    get与post
    Ajax(来自w3school)
    EasyUI——combotree
  • 原文地址:https://www.cnblogs.com/riskyer/p/3228661.html
Copyright © 2011-2022 走看看