首页 > 其他分享 >洛谷 P1795 无穷的序列 题解

洛谷 P1795 无穷的序列 题解

时间:2024-02-11 15:22:33浏览次数:34  
标签:洛谷 数列 题解 ll long dfrac lld scanf P1795

题目传送门

题目大意:给定整数 \(a\),判断 \(a\) 是否属于数列 \(1,2,4,7,11\cdots\)。多测。

1. 暴力枚举(90pts)

不难发现,该数列除第一项外第 \(n\) 项比第 \(n-1\) 项多 \(n-1\)。故暴力枚举 \(n\),计算数列的每一项,判断是否与 \(a\) 相等,大于 \(a\) 就 break。

多测加记忆化,用 mx 表示已处理的最大项数,在 mx 内的项直接读记忆。

#11 TLE。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

bool f;
ll q,a,s,mx=-1;
map<ll,bool> b;
int main(void) {
  scanf("%lld",&q);
  while (q--) {
    scanf("%lld",&a);
    if (a<=mx) putchar(b[a]+'0');
    else {
      mx=a, s=1, f=1;
      for (ll n=1; s<=a; n++) {
        if (s==a) {
          f=0, b[a]=1;
          putchar('1');
          break;
        }
        s+=n;
        b[s]=1;
      }
      if (f) putchar('0');
    }
    putchar('\n');
  }
  return 0;
}

2. 数学法(AC)

该数列通项公式为 \(a_n=\dfrac{n(n-1)}{2}+1\)。

则只需解方程 \(\dfrac{n(n-1)}{2}+1=a\) 即 \(n^2-n-2a+2=0\),判断 \(n\) 是否为正整数即可。

\(n=\dfrac{1+\sqrt{8a-7}}{2}\)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll q,a;
int main(void) {
  scanf("%lld",&q);
  while (q--) {
    scanf("%lld",&a);
    if (a==1 || a==2) putchar('1'); // 特判 省时间
    else {
      a=(a<<3)-7;
      double n=(1+sqrt(a))/2;
      if (n==floor(n)) putchar('1'); // 判断是否为整数
      else putchar('0');
    }
    putchar('\n');
  }
  return 0;
}

标签:洛谷,数列,题解,ll,long,dfrac,lld,scanf,P1795
From: https://www.cnblogs.com/uxod/p/18013344

相关文章

  • P5524 [Ynoi2012] NOIP2015 充满了希望 题解
    题目链接:充满了希望一开始以为是传统老题,结果看到有个交换单修操作,ODT这题试了下,应该\(fake\)了,毕竟有单修,很难保证之前的\(log\)级复杂度。有些较为智慧的解法确实不好思考,说个很简单的做法,这里没有问颜色数,而是问的颜色具体情况,那就比之前的很多题简单太多了。颜色的具体......
  • AtCoder-abc340_f题解
    题意简述给定整数\(x,y\),询问是否存在整数\(a,b\),满足:\(-10^{18}\lea,b\le10^{18}\)。由\((0,0),(x,y),(a,b)\)三点构成的三角形面积为\(1\)。如果存在,输出任意一组;否则输出-1。思路先假设\(x,y,a,b\)都是正数。那么图大概是这样:此时红色三角形的面积就......
  • P4183 [USACO18JAN] Cow at Large P 题解
    Description贝茜被农民们逼进了一个偏僻的农场。农场可视为一棵有\(N\)个结点的树,结点分别编号为\(1,2,\ldots,N\)。每个叶子结点都是出入口。开始时,每个出入口都可以放一个农民(也可以不放)。每个时刻,贝茜和农民都可以移动到相邻的一个结点。如果某一时刻农民与贝茜相遇了......
  • [AGC062B] Split and Insert 题解
    题目链接点击打开链接题目解法咋神仙区间\(dp\)题永远想不到区间\(dp\)???首先把操作顺序反转那么现在的问题就是:每次可以选出一个子序列放到序列末尾,使序列升序的最小代价这个问题看着也是毫无头绪我尝试去找些规律,当然也没找到考虑精细刻画操作过程:最终的序列是升序的,最......
  • P8670 [蓝桥杯 2018 国 B] 矩阵求和 题解
    题目传送门前置知识欧拉函数解法欧拉反演,简单地推下式子即可。\(\begin{aligned}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\gcd(i,j)^{2}&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{d=1}^{n}d^{2}[\gcd(i,j)=d]\\&=\sum\limits_{i=1}^{n}\sum......
  • Ucup2 -19题解
    Ucup2-19题解:​ 这场的题还是挺有意思的,之前回家后因为过年的准备+美赛摆了挺久没训练,现在开始复健,顺便复活一下死去已久的博客。​ 水题就不赘述了,这次主要说说几道比较难的但思路很有趣的题目,顺序就按难度排吧。G.LCACountingProblem-G-Codeforces题意:给定一颗无向......
  • AtCoder ABC 263 D 题解
    AtCoderABC263D题解前言本蒟蒻的第一篇题解,大佬勿喷QwQ传送门们洛谷传送门AtCoder传送门正文设有\(x\)使得\(x\leqk\)时,令\(f(k)\)为对\(A'\)进行运算后\(A'=(A_1,A_2,\ldots,A_k)\)的最小和。同理,对于\(y\)使得\(y\leqk\)时,令\(g(k)\)为对\(A......
  • 新年欢乐赛题解
    cyh巨佬举办的比赛。比赛页面赛后补题官方题解赛时没时间写题,赛后补一下。T1:默认排名第一,对于每次输入,若输入的成绩更优,则将排名降低。这里更劣的成绩没用,因为默认初始排名第一。T2:At上的一道原题。考虑DP求解。\(dp_{i,0/1}\)分别表示到第\(i\)张翻和不翻的总......
  • P9170 [省选联考 2023] 填数游戏 题解
    Description众所周知,Alice和Bob是一对好朋友。今天,他们约好一起玩游戏。一开始,他们各自有一张空白的纸条。接下来,他们会在纸条上依次写\(n\)个\([1,m]\)范围内的正整数。等Alice写完,Bob在看到Alice写的纸条之后开始写他的纸条。Alice需要保证她写下的第\(i\)个......
  • P9478 [NOI2023] 方格染色题解
    题解对于行操作,列操作和对角线操作,实际上仅仅只是在对若干个矩形求面积并而已,这是裸的扫描线题,套用模板即可,此时注意到对角线操作实际上是\(O(n)\)量级的矩阵面积并,因此复杂度是\(O(n\logq+q\logq)\)的量级,只能获得95pts。显然,面积并具有交换性,我们先做\(O(q\logq)\)......