算法学习笔记(四)------查找元素

对于一些题目,常常会碰到这样一种情况:给定一些元素,然后查找某个满足条件的元素。如果范围较小,直接遍历即可,本篇笔记就是使用这种方法。如果范围较大,则使用后面说到的二分查找。

例如,输入一个数字你,然后输入n个不同的数字,再输入一个数值x,输出这个x的下标,如不存在,则输出-1.

#include<cstdio>
const int maxn =210;
int a[maxn];
int main(){
    int k,n,x;
    while(scanf("%d",&n)!=EOF){
        for(int i =0;i<n;i++){
            scanf("%d",&a[i]);
        }
        scanf("%d",&x);
        for(k=0;k<n;k++){
            if(a[k] == x){
                printf("%d\n",k);
                break;
            }
        }
        if(k==n){
            printf("-1\n");
        }
    }
    return 0;
}

下面我们从一个具体题目中运用这个方法。

美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。

一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:

“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”

请你推算一下,他当时到底有多年轻。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int i,k,a,b,d,t=0,h=1;
    long long num;
    int j[20];
    for(i=5;i<40;i++){
        a = i*i*i;
        b = a * i;
        if(a>999 && a<10000 && b>99999 && b<1000000)
        {
            num = a*1000000+b;
                for(d=0;d<10;d++)
                {
                    while(num>0)
                    {
                    j[d]= num%10;
                    num = num/10;
                    d++;
                    }

            }
            for(k=0;k<10;k++){
                for(d=0;d<10;d++){
                    if (j[d] == k) t++;
                }
            }
            if(t == 10) cout<<i;
            }
        }
        return 0;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值