怎么实现两个int类型的整数 a与b之和的位数与a的位数相同,输出true
直接整形转化为字符串,然后获取字符串的位数就可以做比较了
#include
using namespace std;
#define ll long long
int main()
{
ll sum;
int a,b;
scanf("%d %d",&a,&b);
sum=a+b;
int ans1=0,ans2=0;
int m=a,n=sum;
while(m){
ans1++;
m/=10;
}
while(n){
ans2++;
n/=10;
}
if(m==n)
printf("true\n");
return 0;
}
import java.util.Scanner;
import sun.security.util.Length;
/*
* 怎么实现两个int类型的整数 a与b之和的位数与a的位数相同,输出true?
*/
public class ClassTest01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入第一个数a:");
int a = input.nextInt();
System.out.print("请输入第一个数b:");
int b = input.nextInt();
String strA = String.valueOf(a);
String[] stra = strA.split("");
System.out.println("位数为:" + stra.length);
int Last = (int) Math.pow(10, stra.length);
int Max = Last - a - 1;
System.out.println("当输入b的值小于" + Max + "时,"
+ "int类型的整数 a与b之和的位数与a的位数相同");
String result=(b<=Max)?"true":"false";
System.out.println(result);
}
}
//请输入第一个数a:123
//请输入第一个数b:123
//位数为:3
//当输入b的值小于876时,int类型的整数 a与b之和的位数与a的位数相同
//true
//初学者,可能思路比较麻烦,搞了好久,勿喷,采用int类型化为字符串,字符串化为数组(也可能可以直接输出字符串长度),
然后以数组长度来当输入的int数的位数,那么10的位数次方减去a-1就是b的最大取值范围!不知道这样能不能说清
做一个for循环,定义一个变量(用来检查字节,)再做一个for循环,时间有限,差不多就是这个意思
int a = 10;
int b = 1;
boolean isSameAsA = String.valueOf(a).length() == String.valueOf(a+b).length();
System.out.println(isSameAsA);