2017-03-19 codeforces 664C 找规律,水

C. International Olympia

题意:从1989年起,每一年记作IAO‘y,其中y为该年份的第一个没有被占用过的后缀,比如1989记作IAO‘9,1990记作IAO‘0,1991记作IAO‘1 ,给出n个IAO‘y,求它们分别代表的年份。

tags:好纠结的题,要理清楚。。

可以发现一开始的10年(1989-1998)会缩成一位数,接下来100年(1999-2098)会缩成两位数,接下来1000年(2099-3098)会缩成三位数,接下来10000年(3099-13098)会缩成四位数,再往下就不用说了。

如果一下子短路了没分析出来,也可以先暴力打出前200000年的缩写,然后对比较大的年份找规律,3099年开始规律是比较简单的,每次查询如果是这200000内的就直接回答,否则根据规律求出结果即可。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define rep(i,a,b) for (int i=a;i<=b;i++)
#define per(i,b,a) for (int i=b;i>=a;i--)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
typedef long long ll;
const int N = 200005;

int n;
string s;
ll fpow(int a, int b) {ll ans=1; for(;b;b>>=1,a*=a)if(b&1)ans*=a; return ans;}
int main()
{
    scanf("%d", &n);
    while(n--) {
        cin>>s;
        int len=s.size()-4, cnt=0;
        ll num=0;
        per(i,s.size()-1,4) {
            int x=s[i]-‘0‘;
            num+=fpow(10,cnt++)*x;
        }
        ll s1=fpow(10,len), s2=1988;
        rep(i,1,len-1) s2+=fpow(10,i);
        ll s3=(s2+1)%s1;
        ll s4=num>=s3 ? (num-s3+1) : (num+s1-s3+1);
        printf("%lld\n", s2+s4);
    }

    return 0;
}

时间: 2024-12-26 09:38:02

2017-03-19 codeforces 664C 找规律,水的相关文章

长春理工大学第十四届程序设计竞赛F Successione di Fixoracci——找规律&amp;&amp;水题

题目 链接 题意:给出x数列的定义: $T_0 = a$ $T_1 = b$ $T_n = T_{n-2} \bigoplus T_{n-1} $ 求第 $n$ 项( $0 \leqslant a,b,c \leqslant 10^{18} $) 分析 $n$ 这么大,肯定是常数时间复杂度. 打表找规律,能发现循环节为3. 或者直接推导,$a \bigoplus b = c, \ b \bigoplus c = a, \ c \bigoplus a = b$ #include<bits/stdc

CodeForces - 964A(找规律)

原题 题意:给你个数N,问你能得到多少种权重不同的分解(权重指将数分解成一个不上升的正整数序列后,序列中等于序列第一个数的个数) 思路:看到题感觉就是规律题,但是开始一直没搞懂输入8为啥出来5,如果能够简单将前几个数模拟一下,就会发现规律 n ans 1 1 2 2 3 2 4 3 5 3 6 4 7 4 所以 ans=n/2-1 代码: #include<iostream> #include<cstdio> using namespace std; int main() { in

2017/03/19学习笔记

继承中的同名成员变量处理方法 1.当子类成员变量和父类成员变量同名时2.子类依然从父类继承同名变量3.在子类中通过作用域分辨符::进行同名成员区分(在子类中使用父类的同名成员,显式地使用类名限定符)4.同名成员存储在内存中的不同位置 继承中的static关键字 继承和stataic关键字在一起会产生什么现象?1.父类定义的静态成员,将被子类所共享2.根据静态成员自身的访问特性和子类的继承方式,在类层次体系中具有不同的访问性质(遵守子类的访问控制)3.子类中访问静态成员,用以下形式:类名::成员或

【博弈论】【SG函数】【找规律】Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) E. Game of Stones

打表找规律即可. 1,1,2,2,2,3,3,3,3,4,4,4,4,4... 注意打表的时候,sg值不只与剩下的石子数有关,也和之前取走的方案有关. //#include<cstdio> //#include<set> //#include<cstring> //using namespace std; //bool vis[16]; //int n,SG[16][1<<16]; //int sg(int x,int moved) //{ // if(SG

找规律/贪心 Codeforces Round #310 (Div. 2) A. Case of the Zeros and Ones

题目传送门 1 /* 2 找规律/贪心:ans = n - 01匹配的总数,水 3 */ 4 #include <cstdio> 5 #include <iostream> 6 #include <algorithm> 7 #include <cstring> 8 #include <cmath> 9 using namespace std; 10 11 const int MAXN = 2e5 + 10; 12 const int INF =

找规律 Codeforces Round #309 (Div. 2) A. Kyoya and Photobooks

题目传送门 1 /* 2 找规律,水 3 */ 4 #include <cstdio> 5 #include <iostream> 6 #include <algorithm> 7 #include <cstring> 8 #include <cmath> 9 using namespace std; 10 11 const int MAXN = 1e4 + 10; 12 const int INF = 0x3f3f3f3f; 13 char s

2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6154 CaoHaha&#39;s staff(几何找规律)

Problem Description "You shall not pass!"After shouted out that,the Force Staff appered in CaoHaha's hand.As we all know,the Force Staff is a staff with infinity power.If you can use it skillful,it may help you to do whatever you want.But now,hi

HDU 5703 Desert 水题 找规律

已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这题输出二进制数就行了......那就更简单了,直接输出1,然后后面跟n-1个0就行了╮(╯_╰)╭ 下面AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>

Codeforces Gym 100114 A. Hanoi tower 找规律

A. Hanoi tower Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Description you the conditions of this task. There are 3 pivots: A, B, C. Initially, n disks of different diameter are placed on the pivot A: the smallest dis