带分数
来源:互联网 发布:java项目开发硬件环境 编辑:程序博客网 时间:2024/05/14 20:53
问题描述
100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
还可以表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100 有 11 种表示法。
输入格式
从标准输入读入一个正整数N (N<1000*1000)
输出格式
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例输入1
100
样例输出1
11
样例输入2
105
样例输出2
6
主要的思想就是枚举,通过适当的条件进行限制,减少枚举的次数
import java.util.*;public class Main { public static boolean check(int num1,int num2,int num3)//判断三个数1-9并且不重复{String str=Integer.toString(num1)+Integer.toString(num2)+Integer.toString(num3);if(str.length()!=9)//位数不为9肯定不行return false;for(int i=0;i<str.length();i++){if(str.charAt(i)=='0')return false;//不能出现0.for(int j=i+1;j<str.length();j++)if(str.charAt(i)==str.charAt(j))//不能相等return false;}return true;}public static int bit_c(int num)//统计一个数字的位数{return Integer.toString(num).length();} public static void main(String[] arg) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int count=0; for(int i=1;i<n;i++)//枚举1到n-1 { int m=n-i; for(int j=1;bit_c(j)<=(9-bit_c(m))/2;j++)//根据位数进行限制枚举次数 { if(check(i,j,j*m)==true)//判断是否满足条件 { count++; } } } System.out.println(count); } }
0 0
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- windows TLS (线程本地存储)
- Python学习:函数打包
- 使用VC库函数中的快速排序函数
- ubuntu12.04设置默认输入法
- ARC实践
- 带分数
- 物联网:PHP-Laravel快速部署RESTful(零)--关于安装laravel
- hdu 3315 My Brute 网络流
- 新股上市日、新股发行网上申购日的区别
- android 通过WebView显示网页
- Unity NGUI制作聊天框
- NTP时间校准
- UML用例图总结
- 屌丝用Sleep() 函数和 printf() 函数的表白程序