编程在自然数0~30中找到k,使得k,k2,k3都含有数字d 编程在自然数0~30中找到k,使得k,k2,k3都含有数字d。例如:d=1,k=11,k2=121,k3=1331。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 编程在自然数0~30中找到k,使得k,k2,k3(k2,k3分别是指k的二次方和k的三次方)都含有数字d。例如:d=1,k=11,k2=121,k3=1331。 CSDN告诉我:每天回帖即可获得10分可用分! import java.util.regex.Pattern;public class Test_1 { static boolean matcher(int num_1,int num_2,int num_3){ boolean b_1=false; boolean b_2=false; boolean b_3=false; for(int i=0;i<10;i++){ String regex=i+""; b_1=Pattern.compile(regex).matcher(num_1+"").find(); b_2=Pattern.compile(regex).matcher(num_2+"").find(); b_3=Pattern.compile(regex).matcher(num_3+"").find(); if(b_1&&b_2&&b_3){ return true; } } return false; } public static void main(String[] args){ for(int i=0;i<30;i++){ if(matcher(i,i*i,i*i*i)){ System.out.println("k="+i+" k2="+(i*i)+" k3"+(i*i*i)); } } }}测试结果:k=0 k2=0 k30k=1 k2=1 k31k=5 k2=25 k3125k=6 k2=36 k3216k=10 k2=100 k31000k=11 k2=121 k31331k=12 k2=144 k31728k=13 k2=169 k32197k=15 k2=225 k33375k=16 k2=256 k34096k=20 k2=400 k38000k=21 k2=441 k39261k=23 k2=529 k312167k=25 k2=625 k315625k=26 k2=676 k317576 重新贴一下,上面那个最后 System.out.println("k="+i+" k2="+(i*i)+" k3"+(i*i*i));显示k3的时候少了个=,真是晕死了,看得测试数据格式不一直import java.util.regex.Pattern;public class Test_1 { static boolean matcher(int num_1,int num_2,int num_3){ boolean b_1=false; boolean b_2=false; boolean b_3=false; for(int i=0;i<10;i++){ String regex=i+""; b_1=Pattern.compile(regex).matcher(num_1+"").find(); b_2=Pattern.compile(regex).matcher(num_2+"").find(); b_3=Pattern.compile(regex).matcher(num_3+"").find(); if(b_1&&b_2&&b_3){ return true; } } return false; } public static void main(String[] args){ for(int i=0;i<30;i++){ if(matcher(i,i*i,i*i*i)){ System.out.println("k="+i+" k2="+(i*i)+" k3="+(i*i*i)); } } }}测试结果:k=0 k2=0 k3=0k=1 k2=1 k3=1k=5 k2=25 k3=125k=6 k2=36 k3=216k=10 k2=100 k3=1000k=11 k2=121 k3=1331k=12 k2=144 k3=1728k=13 k2=169 k3=2197k=15 k2=225 k3=3375k=16 k2=256 k3=4096k=20 k2=400 k3=8000k=21 k2=441 k3=9261k=23 k2=529 k3=12167k=25 k2=625 k3=15625k=26 k2=676 k3=17576 for (int i = 0; i <= 30; i++) { String s1, s2, s3; s1 = String.valueOf(i); s2 = String.valueOf(i*i); s3 = String.valueOf(i*i*i); for (char c = '0'; c <= '9'; c++) { if (s1.indexOf(c) > -1 && s2.indexOf(c) > -1 && s3.indexOf(c) > -1) System.out.println("d="+c+", k="+s1+", k2="+s2+ ", k3="+s3); }} 我是数学专业的,居然找不到效率高的算法,非常地失落and伤心。无奈只好写个弱智的public class A { public static void main(String[] args) { for(int d=0;d<31;d++){ String sd=String.valueOf(d); for(int k=0;k<31;k++){ int k1=k; int k2=k*k; int k3=k2*k; String s1=String.valueOf(k1); String s2=String.valueOf(k2); String s3=String.valueOf(k3); if(s1.contains(sd)&&s2.contains(sd)&&s3.contains(sd)){ System.out.print("d:"+sd); System.out.print("--k1:"+s1); System.out.print("--k2:"+s2); System.out.println("--k3:"+s3); } } } }} 不是吧,我写个程序的时间,就有这么多的代码上来了。CSDN真活跃啊! 如何理解final域(常量)在编译时的优化,以及与字节码的关系? AES加密解密JAVA實現 eclipese中如何开发GUI程序 奇怪问题(急!) 在jcreator下run程序,怎样运行command line,如设定args[]参数,感激 关于赋值为null的一点疑问,高分求教 谁知道那里有免费的jdbc dirver 采用type 4,一定重谢! 一个jaiva线程同步的问题 急需解决一个问题,有木有大神,谢谢了 Java面试题求解 如何将输入的英文反过来输出? 什么环境下使用ThreadLocal,(不要说hibernate,还没学)
次方和k的三次方)都含有数字d。例如:d=1,k=11,k2=121,k3=1331。
每天回帖即可获得10分可用分!
static boolean matcher(int num_1,int num_2,int num_3){
boolean b_1=false;
boolean b_2=false;
boolean b_3=false;
for(int i=0;i<10;i++){
String regex=i+"";
b_1=Pattern.compile(regex).matcher(num_1+"").find();
b_2=Pattern.compile(regex).matcher(num_2+"").find();
b_3=Pattern.compile(regex).matcher(num_3+"").find();
if(b_1&&b_2&&b_3){
return true;
}
}
return false;
}
public static void main(String[] args){
for(int i=0;i<30;i++){
if(matcher(i,i*i,i*i*i)){
System.out.println("k="+i+" k2="+(i*i)+" k3"+(i*i*i));
}
}
}
}
测试结果:k=0 k2=0 k30
k=1 k2=1 k31
k=5 k2=25 k3125
k=6 k2=36 k3216
k=10 k2=100 k31000
k=11 k2=121 k31331
k=12 k2=144 k31728
k=13 k2=169 k32197
k=15 k2=225 k33375
k=16 k2=256 k34096
k=20 k2=400 k38000
k=21 k2=441 k39261
k=23 k2=529 k312167
k=25 k2=625 k315625
k=26 k2=676 k317576
显示k3的时候少了个=,真是晕死了,看得测试数据格式不一直
import java.util.regex.Pattern;public class Test_1 {
static boolean matcher(int num_1,int num_2,int num_3){
boolean b_1=false;
boolean b_2=false;
boolean b_3=false;
for(int i=0;i<10;i++){
String regex=i+"";
b_1=Pattern.compile(regex).matcher(num_1+"").find();
b_2=Pattern.compile(regex).matcher(num_2+"").find();
b_3=Pattern.compile(regex).matcher(num_3+"").find();
if(b_1&&b_2&&b_3){
return true;
}
}
return false;
}
public static void main(String[] args){
for(int i=0;i<30;i++){
if(matcher(i,i*i,i*i*i)){
System.out.println("k="+i+" k2="+(i*i)+" k3="+(i*i*i));
}
}
}
}
测试结果:k=0 k2=0 k3=0
k=1 k2=1 k3=1
k=5 k2=25 k3=125
k=6 k2=36 k3=216
k=10 k2=100 k3=1000
k=11 k2=121 k3=1331
k=12 k2=144 k3=1728
k=13 k2=169 k3=2197
k=15 k2=225 k3=3375
k=16 k2=256 k3=4096
k=20 k2=400 k3=8000
k=21 k2=441 k3=9261
k=23 k2=529 k3=12167
k=25 k2=625 k3=15625
k=26 k2=676 k3=17576
String s1, s2, s3;
s1 = String.valueOf(i);
s2 = String.valueOf(i*i);
s3 = String.valueOf(i*i*i);
for (char c = '0'; c <= '9'; c++) {
if (s1.indexOf(c) > -1
&& s2.indexOf(c) > -1
&& s3.indexOf(c) > -1)
System.out.println("d="+c+", k="+s1+", k2="+s2+ ", k3="+s3);
}
}
无奈只好写个弱智的public class A {
public static void main(String[] args) {
for(int d=0;d<31;d++){
String sd=String.valueOf(d);
for(int k=0;k<31;k++){
int k1=k;
int k2=k*k;
int k3=k2*k;
String s1=String.valueOf(k1);
String s2=String.valueOf(k2);
String s3=String.valueOf(k3);
if(s1.contains(sd)&&s2.contains(sd)&&s3.contains(sd)){
System.out.print("d:"+sd);
System.out.print("--k1:"+s1);
System.out.print("--k2:"+s2);
System.out.println("--k3:"+s3);
}
}
}
}
}