好题分享

简介: 好题分享

题目描述

输入描述:
输入的第一行包含两个整数n和t表示小数(含小数点)的长度以及四舍五入的次数。

第二行为一个字符串表示qdgg的初始分数。
输出描述:
一行表示qdgg能得到的最高分数(请勿输出尾零)

输入描述:
第一行是样例数T
第2到2+T-1行每行有一个整数n(n<=80),描述每个样例中的n。
输出描述:
对于每个样例输出对应的方法数

include

using namespace std;

long long a[90];

int main()
{

a[0] = 1;
a[1] = 1;
int n;
cin >> n;
for(int i = 2;i <= 80;i ++)
{
    a[i] = a[i-1] + a[i-2];
}
while(n --)
{
    int x;
    cin >> x;
    cout << a[x] << endl;
}

}

题目描述

输入描述:
两个正整数,用“:”隔开,表示小时和分钟,保证输入时间合法。
输出描述:
两行,两个时刻(不含前导0),用“:”隔开,表示上一个时刻和下一个时刻

include

using namespace std;

int main() {

int a, b, A, B;
scanf("%d:%d", &a, &b);
A = a, B = b;
while (true) {
    b--;       //找之前的时间
    if (b < 0) //回到上个小时
        a--;
    b = (b + 60) % 60; //防止负数
    a = (a + 24) % 24;
    if (a % 10 == b / 10 && b % 10 == a / 10) {//回文
        printf("%d:%d\n", a, b);
        break;
    }
}
while (true) {
    B++;         //找之后的时间
    if (B == 60) //去到下个小时
        A++;
    B = (B + 60) % 60;
    A = (A + 24) % 24;
    if (A % 10 == B / 10 && B % 10 == A / 10) {
        printf("%d:%d\n", A, B);
        break;
    }
}
return 0;

}

这个题没有要求输出前导0,如果要输出前导0,可以用%02d(宽度为2,左端补0) 

题目描述

输入描述:
第一行一个整数n,表示有n只妖精下一行n个数ai,表示每只妖精飞行高度
输出描述:
输出一行,一个整数表示答案

include

using namespace std;
const int N=1010;
int a[N];
int main()
{

int n,max1=0,b=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
a[n+1]=1001;
for(int i=1;i<=n;i++)
{
    int j=0;
    while(a[i]+1==a[i+1]&&a[i]-a[i-1]==1)//双指针算法  
    {                                    //这里要用while 而不是if
        j++;
        i++;
    }
    max1=max(max1,j);//取最大值
}
printf("%d",max1);
return 0;

}
Problem - 1777A - Codeforces

cf的题就是妙,有的不能按它的字面意思来写

如果这样写,会爆掉 

因为a[i+1]*=a[i]不合适

include

using namespace std;
const long long N=100010;
long long a[N];
int main()

{

long long t;
cin>>t;
while(t--){
    long long n,num=0;
    cin>>n;
    for(long long i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(long long i=0;i<n-1;i++)
    {
        if(a[i]%2==0&&a[i+1]%2==0||a[i]%2==1&&a[i+1]%2==1)
        {
            num++;
            a[i+1]*=a[i];
        }
    }
    cout<<num<<endl;
}

}

 正确解法

include

using namespace std;
const long long N=100010;
long long a[N];
int main()

{

long long t;
cin>>t;
while(t--){
    long long n,num=0;
    cin>>n;
    for(long long i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(long long i=0;i<n-1;i++)
    {
        if(a[i]%2==0&&a[i+1]%2==0||a[i]%2==1&&a[i+1]%2==1)
        {
            num++;
            //a[i+1]*=a[i];
        }
    }
    cout<<num<<endl;
}

}
Code over!

相关文章
|
5天前
每日一题(珠玑妙算,两数之和)
每日一题(珠玑妙算,两数之和)
22 1
|
5天前
|
C++ 存储
力扣C++|一题多解之数学题专场(1)
力扣C++|一题多解之数学题专场(1)
24 0
力扣C++|一题多解之数学题专场(1)
|
5天前
|
C++ 存储 Serverless
力扣C++|一题多解之数学题专场(2)
力扣C++|一题多解之数学题专场(2)
29 0
力扣C++|一题多解之数学题专场(2)
|
9月前
两道智力题
两道智力题
|
9月前
三道华为机试题
三道华为机试题
35 0
|
10月前
|
人工智能 BI
《蓝桥杯每日一题》并查集·AcWing1249. 亲戚
《蓝桥杯每日一题》并查集·AcWing1249. 亲戚
37 0
|
人工智能
三道好题分享
上课睡觉 - AcWing题库
61 0
|
算法 JavaScript 前端开发
日拱算法:解两道“杨辉三角”题
什么是“杨辉三角”,想必大家并不陌生~~ 在「杨辉三角」中,每个数是它左上方和右上方的数的和。