unrating的一场CF

A - Complicated GCD

#include <bits/stdc++.h>

const int N = 1e5 + 5;
char a[105], b[105]; bool equal() {
int lena = strlen (a);
int lenb = strlen (b);
if (lena != lenb) {
return false;
}
for (int i=0; i<lena; ++i) {
if (a[i] != b[i]) {
return false;
}
}
return true;
} int main() {
scanf ("%s%s", a, b);
if (equal ()) {
printf ("%s\n", a);
} else {
puts ("1");
} return 0;
}

贪心 B - Rebus

取最小最大,从最大调到n

#include <bits/stdc++.h>

const int N = 1e3 + 5;
char str[N];
int n, x, y; int main() {
gets (str);
int len = strlen (str);
x = 1; y = 0;
for (int i=0; i<len; ++i) {
if (str[i] == '+') {
x++;
} else if (str[i] == '-') {
y++;
} else if (str[i] >= '0' && str[i] <= '9') {
n = n * 10 + (str[i] - '0');
}
}
int mx = x * n - y;
int mn = x - n * y;
if (n > mx || n < mn) {
puts ("Impossible");
} else {
int f = 0, sp = 0;
int xx = 0, yy = 0, now = mx;
while (now > n) {
if (now - n + 1 > n) {
now -= (n - 1);
if (xx < x) {
xx++;
} else {
yy++;
}
} else {
int d = now - n;
if (xx < x) {
f = -1;
sp = n - d;
} else {
f = 1;
sp = 1 + d;
}
break;
}
}
puts ("Possible");
for (int i=0; i<len; ++i) {
if (str[i] == '?') {
if (i == 0) {
if (f == -1) {
printf ("%d", sp);
f = 0;
} else if (xx > 0) {
printf ("1");
xx--;
} else {
printf ("%d", n);
}
} else {
if (str[i - 2] == '+') {
if (f == -1) {
printf ("%d", sp);
f = 0;
} else if (xx > 0) {
printf ("1");
xx--;
} else {
printf ("%d", n);
}
} else {
if (f == 1) {
printf ("%d", sp);
f = 0;
} else if (yy > 0) {
printf ("%d", n);
yy--;
} else {
printf ("1");
}
}
}
} else {
printf ("%c", str[i]);
}
}
puts ("");
} return 0;
}

贪心 C - International Olympiad

头晕,看不懂题意

Consider the abbreviations that are given to the first Olympiads. The first 10 Olympiads (from year 1989 to year 1998) receive one-digit abbreviations (IAO'9, IAO'0, ..., IAO'8). The next 100 Olympiads (1999 - 2098) obtain two-digit abbreviations, because all one-digit abbreviations are already taken, but the last two digits of 100 consecutive integers are pairwise different. Similarly, the next 1000Olympiads get three-digit abbreviations and so on.

Now examine the inversed problem (extract the year from an abbreviation). Let the abbreviation have k digits, then we know that all Olympiads with abbreviations of lengths (k - 1), (k - 2), ..., 1 have passed before this one. The number of such Olympiads is10k - 1 + 10k - 2 + ... + 101 = F and the current Olympiad was one of the 10k of the following. Therefore this Olympiad was held in years between (1989 + F) and (1989 + F + 10k - 1). As this segment consists of exactly 10k consecutive natural numbers, it contains a single number with a k-digit suffix that matches the current abbreviation. It is also the corresponding year.

#include <bits/stdc++.h>

char str[20];

int main() {
int n; scanf ("%d", &n);
for (int i=0; i<n; ++i) {
scanf ("%s", str);
int len = strlen (str + 4);
int year = atoi (str + 4);
int add = 0, tenpow = 10;
for (int j=1; j<len; ++j) {
add += tenpow;
tenpow *= 10;
}
while (year < 1989 + add) {
year += tenpow;
}
printf ("%d\n", year);
} return 0;
}

  

Codeforces Round #347 (Div. 2)的更多相关文章

  1. Codeforces Round #347 (Div. 2) C. International Olympiad 找规律

    题目链接: http://codeforces.com/contest/664/problem/C 题解: 这题最关键的规律在于一位的有1989-1998(9-8),两位的有1999-2098(99- ...

  2. Codeforces Round #347 (Div. 2) B. Rebus

    题目链接: http://codeforces.com/contest/664/problem/B 题意: 给你一个等式,把等式左边的问号用1到n(n为等式右边的数)的数填好,使得等式成立 题解: 贪 ...

  3. Codeforces Round #347 (Div.2)_B. Rebus

    题目链接:http://codeforces.com/contest/664/problem/B B. Rebus time limit per test 1 second memory limit ...

  4. Codeforces Round #347 (Div.2)_A. Complicated GCD

    题目链接:http://codeforces.com/contest/664/problem/A A. Complicated GCD time limit per test 1 second mem ...

  5. Codeforces Round #347 (Div. 2) (练习)

    A: 题意:找到[a, b]的最大公约数: 思路:相同时为本身,不同时为1. 套路:碰到水题别想太多: 猜想:两个相邻数,必有一奇一偶,如果偶数有因子3或者其他,奇数可不可能有相同的呢? 枚举一些数后 ...

  6. codeforces Round #347 (Div. 2) C - International Olympiad

    思路:从后往前一位一位的模拟,每次判断一下当前枚举的数是否之间枚举过了.或者当前枚举数过小,小于1989. #include<cstdio> #include<cstring> ...

  7. Codeforces Round #347 (Div. 2) A

    Description Greatest common divisor GCD(a, b) of two positive integers a and b is equal to the bigge ...

  8. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  9. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

随机推荐

  1. osg osgDB::Options noTexturesInIVEFile ForceReadingImage dds_flip

    osgDB::writeNodeFile(node, path, new osgDB::Options("noTexturesInIVEFile")); noTexturesInI ...

  2. -[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000000000e3

    网络数据解析出现-[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000000000e3这样的错误,具体 re ...

  3. 关于each

    1种 通过each遍历li 可以获得所有li的内容 <!-- 1种 --> <ul class="one"> <li>11a</li> ...

  4. spring 定时任务

    http://zywang.iteye.com/blog/949123 xml 需要根据情况酌情删减

  5. C++中实现对象的clone()

    在C#中,许多对象自动实现了clone函数,在C++中,要拷贝一个对象,除了自定义一个拷贝构造函数来实现对象复制外,还可以像C#中那样实现一个clone函数,这需要借助编译器实现的一个隐藏拷贝构造函数 ...

  6. web storm

    常用插件: code glance 代码预览功能,用过的都知道有多爽...

  7. C#的Attribute

    using System; using System.Collections; using System.Collections.Generic; using System.IO; namespace ...

  8. 个推+DCLOUD,推送消息和透传消息

    DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...

  9. 取得表中数据的insert语句

    Build Insert Statements for the Existing Data in Tables 下面这个脚本实现了取得一个非空表中的所有insert语句 This script bui ...

  10. Mishka and Interesting sum Codeforces Round #365 (树状数组)

    树状数组,与Turing Tree类似. xr[i]表示从1到i的抑或,树状数组维护从1到i每个数只考虑一次的异或,结果为sum(r) ^ sum(l) ^ xr[r] ^ xr[l] 其中xr[r] ...