寻找整数

本文介绍了一个简单的Java程序,该程序用于解决一个常见的编程问题:在一个非负整数构成的数列中找到特定整数首次出现的位置。程序通过读取标准输入来获取数列和待查找的整数,并输出该整数在数列中的第一次出现位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

输入格式

第一行包含一个整数n。

第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。

第三行包含一个整数a,为待查找的数。

输出格式

如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。

样例输入

6
1 9 4 8 3 9
9



package com.hello.ds;



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main 
{

static int fun(int[] num,int nn)
{
for(int i=0;i<num.length;i++)
{
if(num[i]==nn)
return i+1;
}
return -1;
}

public static void main(String[] args) throws NumberFormatException, IOException 
{
BufferedReader bf1=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(bf1.readLine());
String[] s1=bf1.readLine().split(" ");
int[] num=new int[n];
for(int i=0;i<n;i++)
num[i]=Integer.parseInt(s1[i]);
int nn=Integer.parseInt(bf1.readLine());
System.out.println(fun(num, nn));

}

}





### 数论与整数算法的相关示例 #### 同余理论的应用 同余理论作为数论的重要组成部分,提供了处理整数问题的强大工具。它不仅能够简化复杂的计算过程,还能有效解决许多实际问题[^1]。例如,在模运算中,我们可以通过简单的算术操作来验证两个整数是否在同一类等价关系下相等。 #### C++ 中的数论算法实现 C++ 是一种高效的语言,特别适合实现各种数论算法。以下是几种常见的数论算法及其应用: 1. **质数判定** 判断一个整数 \( n \) 是否为质数是一个基础但重要的问题。通过试除法可以有效地完成这一任务。具体来说,只需检查从 2 到 \( \sqrt{n} \) 的所有整数是否能整除 \( n \)[^3]。如果存在这样的整数,则 \( n \) 不是质数;反之则是质数。 下面展示了一个基于上述原理的 `isPrime` 函数实现: ```cpp bool isPrime(int n) { if (n <= 1) return false; if (n == 2 || n == 3) return true; if (n % 2 == 0 || n % 3 == 0) return false; for (int i = 5; i * i <= n; i += 6) { if (n % i == 0 || n % (i + 2) == 0) return false; } return true; } ``` 2. **埃氏筛法(Sieve of Eratosthenes)** 埃氏筛法是一种经典的算法,用于快速筛选一定范围内的所有质数。其核心思想是从最小的质数开始逐步标记合数,最终保留下来的即为质数集合[^2]。 实现如下: ```cpp vector<int> sieveOfEratosthenes(int limit) { vector<bool> prime(limit + 1, true); prime[0] = prime[1] = false; for (int p = 2; p * p <= limit; ++p) { if (prime[p]) { for (int multiple = p * p; multiple <= limit; multiple += p) { prime[multiple] = false; } } } vector<int> primes; for (int num = 2; num <= limit; ++num) { if (prime[num]) primes.push_back(num); } return primes; } ``` 3. **线性同余方程求解** 线性同余方程的形式通常为 \( ax \equiv b \ (\text{mod}\ m) \),其中 \( a, b, m \) 已知,目标是找到满足该条件的所有可能的 \( x \) 值。这类问题可通过扩展欧几里得算法求解最大公约数的同时得到特解。 #### 铺瓷砖问题中的组合优化 虽然铺瓷砖问题是关于几何覆盖的经典题目,但它同样涉及到一些数论的思想,比如如何最优地分配资源以达到全局最佳效果[^4]。回溯法在此类问题中有广泛应用,尤其是在约束条件下寻找可行方案时显得尤为重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值