[Euler]Problem 32 - Pandigital products
来源:互联网 发布:starbound mac 编辑:程序博客网 时间:2024/05/20 22:29
We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through 5 pandigital.
The product 7254 is unusual, as the identity, 39 186 = 7254, containing multiplicand, multiplier, and product is 1 through 9 pandigital.
Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.
HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum.
公式 a * b = c;
一共9个数, 所以推算c只能是4位数, a是1到4位, b是1到2位。
至于a, b , c是否是pandigital products, 没费脑子一位一位的算,直接转成List,接着排序。
于是暴力的方法就这么产生了:
import java.util.ArrayList;import java.util.Collections;import java.util.List;public class PandigitalProducts {public static void main(String[] args) {long before = System.currentTimeMillis();new PandigitalProducts().calculate();System.out.println("elapsed time is : " + (System.currentTimeMillis() - before));}private void calculate() {List<Integer> products = new ArrayList<Integer>();int product = 0;int sum = 0;for (int i = 1; i < 9999; i++) {for (int j = 1; j < 99; j++) {product = i * j;if (isPandigital(i, j, product) && !products.contains(product)) {products.add(product);sum += product;System.out.println("i = " + i + " , j = " + j + " , product = " + product);}}}System.out.println("sum of all products is : " + sum);}private boolean isPandigital(int a, int b, int product) {List<String> numberList = new ArrayList<String>();String idealStr = "123456789";String whatWeGotStr = "";String temp = "" + a + b + product;String[] strArr = temp.split("");for (String s : strArr) {numberList.add(s);}Collections.sort(numberList);for (String s : numberList) {whatWeGotStr += s;}if (whatWeGotStr.equals(idealStr)) {return true;}return false;}}
console :
i = 138 , j = 42 , product = 5796i = 157 , j = 28 , product = 4396i = 159 , j = 48 , product = 7632i = 186 , j = 39 , product = 7254i = 198 , j = 27 , product = 5346i = 1738 , j = 4 , product = 6952i = 1963 , j = 4 , product = 7852sum of all products is : 45228elapsed time is : 2099
- [Euler]Problem 32 - Pandigital products
- Project Euler:Problem 32 Pandigital products
- 32 Pandigital products - Project Euler -
- projecteuler---->problem=32----Pandigital products
- Problem 32 Pandigital products (暴力+set)
- Project Euler:Problem 38 Pandigital multiples
- Project Euler:Problem 41 Pandigital prime
- No_32:Pandigital products
- PE32-Pandigital products
- Project Euler Problem 32
- Project Euler - Problem 32
- Project Euler problem 32
- Project Euler Problem 32
- Project Euler 38 Pandigital mutiples(枚举)
- (Problem 41)Pandigital prime
- Problem Euler
- Problem 38 Pandigital multiples (set + vector)
- project euler problem 32又是暴搜
- 鼠标移上去之后,显示提示信息
- tetris 2*2
- SAP HANA efashion案例(eFashion on HANA)
- ural 1036
- 线段树学习小记 Hdu 1754+Poj 3264 (区间最值)
- [Euler]Problem 32 - Pandigital products
- 浅谈微信对运营商的冲击
- 给年轻程序员的建议
- Android的Activity的onCreate()多次调用的问题
- 几个开源GIS软件
- VI的配置
- 一个游戏程序员的学习资料
- hdu 2922 Relax! It’s just a game
- 作业