/*
* 观察下面的现象,某个数字的立方,按位累加仍然等于自身。
* 1^3 = 1
* 8^3 = 512 5+1+2=8
* 17^3 = 4913 4+9+1+3=17
...
*请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?
*填写该数字,不要填写任何多余的内容或说明性的文字。
*/
public class _048立方变自身 {
private static int count;
public static void main(String[] args) {
for(int i = 1;i < 99;i++) {
int i1 = i * i * i;
int res = f(i1);
if (res == i) {
System.out.println(i + " " + i1);
count++;
}
}
System.out.println(count);
}
//按位累加
private static int f(int x) {
String str = String.valueOf(x);//转为字符串
int sum = 0;
for(int i = 0;i < str.length();i++) {
sum += str.charAt(i) - '0';//转为整型
}
return sum;
}
}
/*
* 观察下面的加法算式:
祥瑞生辉
+ 三羊献瑞
----------------------
三羊生瑞气
* 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
* 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
*
* 思路
* a b c d
* + e f g b
* --------------
* e f c b i
*
* 易知
* e=1,a=9,f=0,c=b+1,c+g>10
*/
public class _049三羊献瑞 {
public static void main(String[] args) {
for(int b = 2;b < 9;b++) {
for(int d = 2;d < 9;d++) {
if (b == d) {
continue;
}
for(int g = 2;g < 9;g++) {
if (g == b || g == d) {
continue;
}
int c = b + 1;
if (c == b || c == d || c ==g) {
continue;
}
if (c + g <= 10) {
continue;
}
int sum = 9000 + b * 100 + c * 10 + d + 1000 + g * 10 + b;
for(int i = 2;i < 9;i++) {
if (i == b || i == d || i == g || i == c) {
continue;
}
if (sum <= (10000 + c * 100 + b * 10 + i) &&
sum >= (10000 + c * 100 + b * 10 + i)) {
System.out.printf("%2d%d%d%d\n",9,b,c,d);
System.out.printf("%2d%d%d%d\n",1,0,g,b);
System.out.printf("%d\n",sum);
}
}
}
}
}
}
}
/*
* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
* 下面的程序实现了该功能,请填写划线部分缺失的代码。
*
public class A{
public static void test(int[] x) {
int a = x[0] * 1000 + x[1] * 100 + x[2] * 10 + x[3];
int b = x[4] * 10000 + x[5] * 1000 + x[6] * 100 + x[7] * 10 + x[8];
if (a * 3 == b)
System.out.println(a + " " + b);
}
public static void f(int[] x, int k) {
if (k >= x.length) {
test(x);
return;
}
for (int i = k; i < x.length; i++) {
{int t = x[k];x[k] = x[i];x[i] = t;}
f(x, k + 1);
———————————————————————————————————— // 填空
}
}
public static void main(String[] args) {
int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
f(x, 0);
}
}
* 思路
* 全排列,回溯
*/
public class _050九数组分数 {
public static void test(int[] x) {
int a = x[0] * 1000 + x[1] * 100 + x[2] * 10 + x[3];
int b = x[4] * 10000 + x[5] * 1000 + x[6] * 100 + x[7] * 10 + x[8];
if (a * 3 == b)
System.out.println(a + " " + b);
}
public static void f(int[] x, int k) {
if (k >= x.length) {
test(x);
return;
}
for (int i = k; i < x.length; i++) {
{int t = x[k];x[k] = x[i];x[i] = t;}
f(x, k + 1);
{int t = x[k];x[k] = x[i];x[i] = t;}//回溯
}
}
public static void main(String[] args) {
int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
f(x, 0);
}
}
import java.util.Scanner;
/*
* 乐羊羊饮料厂正在举办一次促销优惠活动。
* 凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账。
* 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,
* 那么,对于他初始买入的n瓶饮料,最后他一共能得到多少瓶饮料。
*
* 输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
* 输出:一个整数,表示实际得到的饮料数
用户输入:
100
程序应该输出:
149
用户输入:
101
程序应该输出:
151
*/
public class _051饮料换购 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
while(n >= 3) {
n -= 2;
count += 3;
}
count += n;
System.out.println(count);
}
}