codeforces A. IQ Test 解题报告
题目链接:http://codeforces.com/problemset/problem/328/A
一开始单纯地直接判断给出的序列是等差还是等比,连这一句“You should also print 42 if the next element of progression is not integer ” 都直接忽略,因为 Output 中没说,只是描述里讲了(要积累经验啊!!),其实是大错特错!
这个题目的关键是,当判断出给定的序列是等比时,求出下一个数(假设为result)是否是小数的判断(等差就没有这个问题,因为都是整数)。这里我采取的办法是把浮点型的result(用来保存待求的下一个数)转化为字符型s(字符型能够方便地看到是否存了小数点),然后通过strchr找到小数点的位置,判断小数点后的第一个数和字符型最后一个数是否是0,如果都为0,说明不是小数(类似这种表示:10000.000000,因为转化为字符型的s时是以 %lf 的格式来转的,默认情况下它会保留到小数点后6位),否则为小数。
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std; int main()
{
int a, b, c, d, flag;
double a1, b1, c1;
char *p, s[];
while (cin >> a >> b >> c >> d)
{
flag = ;
if (b - a == c - b && c - b == d - c)
{
printf("%d\n", (d-c)+d);
flag = ;
}
a1 = (double)b * 1.0 / a; // 强制类型转换,把整型转化为双精度,考虑到公比有可能是小数
b1 = (double)c * 1.0 / b;
c1 = (double)d * 1.0 / c;
// cout << a1 << " " << b1 << " " << c1 << endl;
if (a1 == b1 && b1 == c1 && !flag)
{
double result = a1 * d; // 保存要求的下一个数
sprintf(s, "%lf", result);
// cout << "s = " << s << endl;
p = strchr(s, '.'); // 特别要注意得出的p不是小数点的位置
int pos = p - s; // 找到小数点的位置
// cout << "pos+1 = " << pos+1 << endl;
// cout << "s[strlen(s)] = " << s[strlen(s)-1] << endl;
if (s[pos+] == '' && s[strlen(s)-] == '') // 这两个条件可以判断出求出的下一个数是否是小数
{
printf("%.0lf\n", result); // 不是小数,而是整数(类似123.000这种表示)
}
else // 等比序列中求出的下一个数是小数
{
printf("42\n");
}
flag = ;
}
if (!flag) // 既不是等差又不是等比
printf("42\n");
}
return ;
}
codeforces A. IQ Test 解题报告的更多相关文章
- Codeforces Round 665 赛后解题报告(暂A-D)
Codeforces Round 665 赛后解题报告 A. Distance and Axis 我们设 \(B\) 点 坐标为 \(x(x\leq n)\).由题意我们知道 \[\mid(n-x)- ...
- Codeforces Round 662 赛后解题报告(A-E2)
Codeforces Round 662 赛后解题报告 梦幻开局到1400+的悲惨故事 A. Rainbow Dash, Fluttershy and Chess Coloring 这个题很简单,我们 ...
- Codeforces Round #277.5 解题报告
又熬夜刷了cf,今天比正常多一题.比赛还没完但我知道F过不了了,一个半小时贡献给F还是没过--应该也没人Hack.写写解题报告吧= =. 解题报告例如以下: A题:选择排序直接搞,由于不要求最优交换次 ...
- codeforces B. Simple Molecules 解题报告
题目链接:http://codeforces.com/problemset/problem/344/B 题目意思:这句话是解题的关键: The number of bonds of an atom i ...
- codeforces 591A. Wizards' Duel 解题报告
题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...
- codeforces 582A. GCD Table 解题报告
题目链接:http://codeforces.com/problemset/problem/582/A 网上很多题解,就不说了,直接贴代码= = 官方题解: http://codeforces.com ...
- codeforces 581C. Developing Skills 解题报告
题目链接:http://codeforces.com/problemset/problem/581/C 题目意思:给出 n 个数:a1, a2, ..., an (0 ≤ ai ≤ 100).给出值 ...
- codeforces 577B. Modulo Sum 解题报告
题目链接:http://codeforces.com/problemset/problem/577/B 题目意思:就是给出 n 个数(a1, a2, ..., an) 和 m,问能不能从这 n 个数中 ...
- codeforces 540B.School Marks 解题报告
题目链接:http://codeforces.com/problemset/problem/540/B 题目意思:给出 k 个test的成绩,要凑剩下的 n-k个test的成绩,使得最终的n个test ...
随机推荐
- 【Gym 100610A】Alien Communication Masterclass
题 Andrea is a famous science fiction writer, who runs masterclasses for her beloved readers. The mos ...
- Linux虚拟地址空间布局
在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中.这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块.在Linux系统中, 内核进 ...
- 【bzoj1050】 旅行comf
http://www.lydsy.com/JudgeOnline/problem.php?id=1050 (题目链接) 题意 给出一个无向图,求图中两点间某条路径使得最大权值除以最小权值的值最小 So ...
- BZOJ1968 [Ahoi2005]COMMON 约数研究
Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...
- ethtool使用记录
网卡出现很诡异的问题,把电脑连到一些交换机上是工作的,连到另外一些就不行...交换机上的link灯还时不时的闪一下,看起来像是在尝试连接. 用dmesg查看,看到下面的信息: [ 1112.92211 ...
- [IOS UIalert模版]
1.alertview创建 UIAlertView *alert; alert = [[UIAlertView alloc] initWithTitle:@"提示" message ...
- JAVA 中SQL字符动态拼接
select SYR,SFZMHM,CJRZH,XSZBH,HPHM,CLSBDH,FDJH,CLLX,ZDYZT,to_char(CCDJRQ,'YYYY-MM-DD') CCDJRQ from V ...
- 使用multi curl进行http并发访问
curl是一款利用URL语法进行文件传输的工具,它支持多种协议,包括FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET等,我们既可以在命令行上使用它,也可以利用 libcur ...
- 轻量级应用开发之(01)第一个IOS程序
一 IPhone轻量级开发 1. 开发环境 Mac 版本: OS X EICap 10.11.3 (15D21) XCode开发版本: Version 7.2.1 (7C1002) 2.简单分析 UI ...
- shared_ptr<> reset
// std_tr1__memory__shared_ptr_reset.cpp // compile with: /EHsc #include <memory> #include < ...