1:牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。
变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80.
问题是,要做多少次变换,使得这个数变成个位数。
输入描述:
输出一个整数,表示变换次数。
285
输出例子:
神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。
比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。
输入描述:
输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000)。
输出描述:
输出为一个整数,表示区间内满足条件的整数个数
输入例子:
11 20
输出例子:
6
3: 牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?
变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80.
问题是,要做多少次变换,使得这个数变成个位数。
输入描述:
输入一个整数。小于等于2,000,000,000。
输出一个整数,表示变换次数。
285
输出例子:
2
import java.util.Scanner;
public class Test4 {
public static boolean containszero(char[] a)
{
for(int i=0;i<a.length;i++)
{
if(a[i]=='0')
{
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.next();
int count=0;
char[] a=s.toCharArray();
int length=s.length();
int n=Integer.parseInt(s);
while(n>9)
{
if(containszero(a))
{
count++;
break;
}
else
{
int temp=1;
for(int i=1;i<=a.length;i++)
{
int minq=(int) (n/Math.pow(10, a.length-i));
int yu=(int)(n%Math.pow(10, a.length-i));
temp=temp*minq;
n=yu;
}
count++;
n=temp;
a=String.valueOf(n).toCharArray();
}
}
System.out.println(count);
}
}
}
2:给出一个区间[a, b],计算区间内“神奇数”的个数。
神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。
比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。
输入描述:
输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000)。
输出描述:
输出为一个整数,表示区间内满足条件的整数个数
输入例子:
11 20
输出例子:
6
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test5 {
public static boolean ismagicnumber(int n)
{
String s=String.valueOf(n);
char[] a=s.toCharArray();
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<a.length;i++)
{
if(!map.containsKey(a[i]))
{
map.put(a[i], 1);
}
else
{
int minq=map.get(a[i]);
map.put(a[i], ++minq);
}
}
if(map.containsKey('1'))
{
if(map.get('1')>1||map.containsKey('3')||map.containsKey('4')||map.containsKey('6')||map.containsKey('7')||map.containsKey('9'))
{
return true;
}
}
else if(map.containsKey('3'))
{
if(map.containsKey('2')||map.containsKey('4')||map.containsKey('5')||map.containsKey('8')||map.containsKey('7'))
{
return true;
}
}
else if(map.containsKey('7'))
{
if(map.containsKey('4')||map.containsKey('6')||map.containsKey('9'))
{
return true;
}
}
else if(map.containsKey('9'))
{
if(map.containsKey('2')||map.containsKey('5')||map.containsKey('8'))
{
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int a=sc.nextInt();
int b=sc.nextInt();
int count=0;
for(int i=a;i<=b;i++)
{
if(i<10)
{
continue;
}
else if(ismagicnumber(i))
{
count++;
}
}
System.out.println(count);
}
}
}
3: 牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?
输入描述:
第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为小写字母。
输出描述:
输出一个整数表示A串添加完字符之后,不相等的位数最少有多少位?
输入例子:
abe cabc
输出例子:
1
package com.itheima.niuke.com;
import java.util.*;
public class Test6
{
public static void main(String[]args)
{
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
String A = in.nextLine();
String B = in.nextLine();
int len = B.length()-A.length();
int max =0;
for(int i=0;i<=len;i++)
{
int tempMax=0;
int sub=0;
for(int j=0;j<A.length();j++)
{
if(A.charAt(j)==B.charAt(j+i))
tempMax++;
}
if(max<tempMax)
max=tempMax;
}
System.out.println(B.length()-(max+len));
}
}
}