找数字

    从键盘输入一个奇数p,其个位数字不是5,求一个整数S,使p*s=11....11。要求在屏幕上依次输出以下结果:(1)S的全部数字,(2)乘积的数字位数。

    例如,输入p=13,输出8547, 6

          输入p=147,.........,42


解题思路:模拟数的除法,参考代码如下:

#include <stdio.h>

int main()
{
	int number;
	int temp,i,j,k;
	
	while(1)
	{
		scanf("%d",&number);
		if(number%2!=0 && number%5!=0)
			break;
	}

	temp=1; k=1;
	while(temp<number){
		temp=temp*10+1;
		k++;
	}
	
	do{
		printf("%d",temp/number);
		k++;
		j=temp%number;
		temp=j*10+1;
	}while(j!=0);
	
	printf("\n%d\n",k-1);

	return 0;
}


### 关于华为OD模式下的数字算法题 在华为OD机试中,涉及“数字”的算法题目通常会考察考生对于数组操作、字符串处理以及特定数据结构的应用能力。以下是基于已有资料整理的一类典型的“数字”问题描述: #### 题目描述 给定一个长度为 `n` 的整数数组 `nums` 和一个目标值 `target`,要出数组中两个不同位置上的数字之和等于目标值的所有组合,并返回这些组合的索引对。如果不存在这样的组合,则返回空列表。 具体要如下: 1. 数组可能包含重复元素。 2. 返回的结果应不包含重复的组合。 3. 如果存在多个满足条件的组合,需全部列出。 4. 时间复杂度尽可能低。 示例输入输出说明: - 输入:`nums = [2, 7, 11, 15], target = 9` - 输出:`[[0, 1]]` 解释:`nums[0] + nums[1] = 2 + 7 = 9`,因此返回其索引 `[0, 1]`[^1]。 --- #### 解决方案概述 此类问题可以通过哈希表来高效解决。核心思想是利用字典存储已经遍历过的数值及其对应的索引,在后续遍历时快速判断是否存在符合条件的目标差值。这种方法的时间复杂度可以达到 O(n),空间复杂度也为 O(n)。 ```python def two_sum(nums, target): result = [] seen = {} for i, num in enumerate(nums): complement = target - num if complement in seen: result.append([seen[complement], i]) seen[num] = i return result ``` 上述代码实现了两数之和的功能,能够有效应对大多数场景需。 --- #### 可能的变化形式 除了基本的两数之和外,“数字”类型的题目还可能出现以下变种: 1. **三数之和**:扩展至三个数相加为目标值的情况。 2. **最接近目标值的子序列**:到任意数量的数字使其总和最接近目标值。 3. **无序数组中的最大/最小乘积**:从数组中选取若干个数字计算它们的最大或最小乘积。 这些问题均可以在基础版本的基础上进一步演化和发展[^2]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值