【蓝桥杯】立方尾不变(两种方法)【java语言】
【摘要】 有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,....请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。请提交该整数,不要填写任何多余的内容方法一: 截取字符串方式public class 立方尾不变 { public static void main(String[] args) { // TODO ...
有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,....
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),
符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容
方法一: 截取字符串方式
public class 立方尾不变 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 0;
//注意这里使用long类型,int类型立方值超出范围
for(long i = 1; i < 10000; i++) {
//获取初始值的长度
int length1 = String.valueOf(i).length();
//获取立方值的长度
int length2 = String.valueOf(i*i*i).length();
//截取字符串
String str = String.valueOf(i*i*i).substring(length2-length1);
//将字符串转为Integer类型和i进行比较
if(Integer.valueOf(str) == i) {
count++;
}
}
System.out.println(count);
}
}
方法二:分段处理方式
因为是1000以内的数字,我们可以把它分为10、100、1000、10000
public class 立方尾不变 {
public static void main(String[] args) {
int count = 0;
for(long i = 1; i < 10000; i++) {
if(i < 10) {
if(Math.pow(i, 3) % 10 == i) {
count++;
}
}else if(i < 100){
if(Math.pow(i, 3) % 100 == i) {
count++;
}
}else if(i < 1000) {
if(Math.pow(i, 3) % 1000 == i) {
count++;
}
}else if(i < 10000) {
if(Math.pow(i, 3) % 10000 == i) {
count++;
}
}
}
System.out.println(count);
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)