最多改变一个数字就能得到的能被3整除的不同数字的数目
- 最后更新 : 2021年8月5日
给定一个字符串 **str[]数字N,**任务是计算通过改变数字的最多一位数使给定的数字能被3整除的方法数量。
例子。
**输入:**str[] = "23"
**输出。**7
解释。 以下是可以由字符串组成的能被3整除的数字 - 03, 21, 24, 27, 33, 63, 93
1.将2改为0 (0+3)=3能被3整除
2.将3改为1 (2+1)=3能被3整除
3将3改为4 (2+4)=6能被3整除
4将2改为3的和是6能被3整除
同样,共有7种方法可以使给定的数字被3整除**输入:**str[] = "235"
输出。 9
办法。解 决这个问题的思路非常简单。计算一个给定数字的位数之和,然后对于每个索引,去掉该位数,并尝试从0到9的所有可能的位数,看总和是否能被3整除。按照下面的步骤来解决这个问题。
- 将变量sum初始化为0,以存储数字的位数之和。
- 使用变量i对一个范围 **[0, N]**进行迭代,并执行以下步骤。
- 在变量sum中加入第i个索引的数字的值**。**
- 将变量count初始化为0,以存储答案。
- 使用变量i在范围**[0, N]**上进行迭代,并执行以下步骤。
- 初始化变量restaining_sum为sum-(number.charAt(i)-48)。
- 使用变量j在一个范围 **[0, 9]**上进行迭代,并执行以下步骤。
- 将j的值加入到变量restaining_sum中,如果restaining_sum能被3整除,且j不等于第i个索引的数字,则将count的值加1。
- 执行上述步骤后,打印出count的值作为答案。
下面是上述方法的实现。
爪哇
// Java program fo the above approachimport java.io.*;import java.util.*;class GFG {// Function to count the number of// possible numbers divisible by 3public static void findCount(String number){// Calculate the sumint sum =0;for (int i =0; i < number.length(); ++i) {sum += number.charAt(i) -48;}// Store the answerint count =0;// Iterate over the rangefor (int i =0; i < number.length(); ++i) {// Decreasing the sumint remaining_sum= sum - (number.charAt(i) -48);// Iterate over the rangefor (int j =0; j <=9; ++j) {// Checking if the new sum// is divisible by 3 or notif ((remaining_sum + j) %3 ==0&& j != number.charAt(i) -48) {// If yes increament// the value of the count++count;}}}System.out.println(count);}// Driver Codepublic static void main(String[] args){// Given numberString number ="235";findCount(number);}} |
输出
9
**时间复杂度。**O(N)
辅助空间。O(1)
读者请注意!现在不要停止学习。掌握竞争性编程的所有重要数学概念。 CP课程的基本数学以适合学生的价格获得所有重要的数学概念。要完成从学习语言到DS Algo和更多的准备工作,请参考 完整的面试准备课程.
我的个人笔记 箭头_下降_上升
保存