Wannafly挑战赛5

珂朵莉与宇宙
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 65536K,其他语言131072K
64bit IO Format: %lld

题目描述

星神是来自宇宙的

所以珂朵莉也是吧

所以我就出了个题

给你一个长为n的序列a,有n*(n+1)/2个子区间,问这些子区间里面和为完全平方数的子区间个数

输入描述:

第一行一个数n
第二行n个数表示序列a

输出描述:

输出一个数表示答案
示例1

输入

6
0 1 0 9 1 0

输出

11

备注:

1 <= n <= 100000

0 <= ai <= 10

注意到ai很小,所以和最大为100w

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100005];
int b[1000005];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        a[i]+=a[i-1];
        b[a[i]]++;
    }
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<=1000&&a[i-1]+j*j<=1e6;j++)
        ans+=b[a[i-1]+j*j];
        b[a[i]]--;
    }
    cout<<ans<<endl;
    return 0;
可编程拖拉机比赛
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 65536K,其他语言131072K
64bit IO Format: %lld

题目描述

“这个比赛,归根结底就是控制一个虚拟的小拖拉机跑完整个赛道。一般一场比赛会有 9 个到 13 个赛道,最后看能跑完多少个赛道。”
通常在一场可编程拖拉机比赛中,分别会有实际参赛队伍数 10%、20%、30% 向下取整的队伍获得金、银、铜牌,其余队伍获得荣誉提名,俗称“铁牌”。
但是主办方往往会多准备一些奖牌,那么在发奖牌的时候会按照比例向上取整发出的奖牌以减少浪费,就会有一些原本获得银牌的队伍获得了金牌。
现在给出一个赛区的规模,也就是这个赛区的实际参赛队伍数,小 Q 同学想知道有多少队伍的奖牌会由银变金、由铜变银、由铁变铜。

输入描述:

输入只有一行,包含一个整数 n (10 <= n <= 1000),表示实际参赛队伍数。

输出描述:

输出一行,包含三个由空格分隔的整数,分别表示奖牌会由银变金、由铜变银、由铁变铜的队伍数。
示例1

输入

115

输出

1 1 2

说明

按照下取整规则只发 11 块金牌的话,第 12 名原本是银牌,但是按照上取整规则发 12 块金牌,第 12 名是金牌,就由银变金了。

直接分析就行了,注意能不能被5和10整除就行,然后就发现了这个规律,因为银和金有增加,总牌数也不会减少,所以也验证了这样是对的

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    if(n%10==0)
        printf("0 0 0");
    else if(n%5==0)
        printf("1 1 2");
    else printf("1 2 3");
    return 0;
}

 

posted @ 2017-12-11 22:46  暴力都不会的蒟蒻  阅读(388)  评论(0编辑  收藏  举报