蓝杯四十四

作者: 逍遥_9353 | 来源:发表于2018-02-10 19:37 被阅读5次

    算法训练 确定元音字母位置 

    时间限制:1.0s  内存限制:512.0MB

    提交此题   

    输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0。英语元音字母只有‘a’、‘e’、‘i’、‘o’、‘u’五个。

    样例输入:

    hello

    样例输出:

    2

    样例输入:

    apple

    样例输出:

    1

    样例输入:

    pmp

    样例输出:

    0

    #include<stdio.h> 

    #include<string.h> 

    int main(){ 

        char a[100]; 

        int i; 

        scanf("%s",a); 

        for(i=0;i<strlen(a);i++){ 

            if(a[i]=='a' || a[i]=='i' || a[i]=='e' || a[i]=='o' || a[i]=='u'){ 

                printf("%d",i+1); 

                return 0; 

            } 

        } 

        printf("0"); 

        return 0; 

    思路分析:

    ①定义变量:字符串(一维数组) ,循环次数;

    ②输入字符串;

    ③for语句循环,if语句判断是否为元音字母;

    ④输出首次元音字母所在位置。

    算法训练 数列 

    时间限制:1.0s  内存限制:256.0MB

    提交此题  锦囊1  锦囊2

    问题描述

      给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:

      1,3,4,9,10,12,13,…

      (该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)

      请你求出这个序列的第N项的值(用10进制数表示)。

      例如,对于k=3,N=100,正确答案应该是981。

    输入格式

      只有1行,为2个正整数,用一个空格隔开:

      k N

      (k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。

    输出格式

      计算结果,是一个正整数(在所有的测试数据中,结果均不超过2.1*109)。(整数前不要有空格和其他符号)。

    样例输入

    3 100

    样例输出

    981

    #include <iostream> 

    #include <cstdio> 

    using namespace std; 

    const int N=1000+5; 

    int a[N]; 

    int main() 

        int n,i,len; 

        int now,k; 

        while(cin>>k>>n){ 

            len=0; 

            now=1; 

            while(len<n){ 

                int tmp=len; 

                a[len++]=now; 

                for(i=0;i<tmp&&len<n;i++) 

                    a[len++]=now+a[i];         

                now*=k; 

            } 

            cout<<a[n-1]<<endl; 

        } 

        return 0; 

    思路分析:

    ①定义变量 :正整数;

    ②3^0                               

    3^1 3^0+3^1                       

    3^2 3^0+3^2 3^1+3^2  3^0+3^1+3^2   

    规律当前n加进去一个,然后要再加上前面所有的个数 

    如果到了某个n,加前面所有的大于N个,就扫下剩下的第几个就行 

    f(n)=1+2*f(n-1)  fn表示有几个数目前

    f(0)=1;

    f(1)=3;

    f(2)=7; 

    求得大于等于N时的n,然后N-f(n-1)剩下的从左边开始数 

    ③输出这个序列的第N项的值。

    相关文章

      网友评论

        本文标题:蓝杯四十四

        本文链接:https://www.haomeiwen.com/subject/tldhtftx.html