一.门牌制作
1.将数字当作int类型来处理
public static void main(String[] args) {
// TODO Auto-generated method stub
int ans = 0;
for(int i=1;i<=2020;i++) {
int t=i;
while(t !=0) {
if(t%10==2) {
ans++;
}
t/=10;
}
}
System.out.println(ans);
}
2.将数字当作字符串来处理,Integer是int的引用类型,可以用i.toString()方法将int类型转换为str类型。
public static void main(String[] args) {
int sum = 0;
for(Integer i=1;i<=2020;i++) {
String str = new String(i.toString());
for(int j=0;j<str.length();j++) {
if(str.charAt(j)=='2') {
sum++;
}
}
}
System.out.println(sum);
}
二.有奖猜谜
使用toCharArray()可以将字符串转换为字符数组
public static void main(String[] args) {
int x = 777;
String str = "vxvxvxvxvxvxvvx";
char a[] = str.toCharArray();
for(int i=0;i<a.length;i++) {
if(a[i]=='v') {
x=x*2;
}else {
x=x-555;
}
}
System.out.println(x);
}
三.乘积尾零
1.将数字看成int类型
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int []arr = new int[100];
for(int i=0;i<100;i++) {
arr[i] = sc.nextInt();
}
int cnt = 0;
for(int i=1;i<100;i++) {
arr[i]=arr[i]*arr[i-1];
while(arr[i]%10==0) {
cnt++;
arr[i]/=10;
}
arr[i]=arr[i]%1000;
}
System.out.println(cnt);
}
2.将数字整体看成一个字符串,将大数输出出来,integer.valueof是将字符串类型转换为int类型
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] c = str.split(" ");
BigInteger a = new BigInteger("1");
for(int j=0;j<c.length;j++) {
a.multiply(BigInteger.valueOf(Integer.valueOf(c[j])));
}
System.out.println(a);
}
3.使用int类型的大数
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
BigInteger[] a = new BigInteger[100]; //大数BigInteger
BigInteger s = BigInteger.valueOf(1); //s求100个数相乘的乘积
for(int i=0;i<100;++i)
{
a[i] = in.nextBigInteger(); //输入题目中的100个数
if(i==0)
{
s = a[i]; //先把第一个数记录下来
}
else
{
s = s.multiply(a[i]); //和剩下的99个数相乘 multiply是BigInteger中的乘法
}
}
String str = s.toString(); //将乘积转换为字符串
int cnt = 0;
for(int i=str.length()-1;i>=0;--i) //逆序遍历
{
if(str.charAt(i)=='0') //统计末尾0的个数
{
cnt++;
}
else //不是0退出
{
break;
}
}
System.out.println(cnt);
}
四.分数
public static void main(String[] args) {
// TODO Auto-generated method stub
BigInteger a = BigInteger.ONE;// 分子
BigInteger b = new BigInteger((int) Math.pow(2, 19) + "");// 分母
BigInteger sum = BigInteger.ZERO;// 分子和
// 求分子
for (int i = 1; i <= 20; ++i) {
sum = sum.add(a);
a = a.multiply(new BigInteger("2"));
}
// 分子分母最大公约数
BigInteger gcd = sum.gcd(b);
System.out.println(sum.divide(gcd) + "/" + b.divide(gcd));
}