Codeforces Round #450 (Div. 2) A题 + B题
来源:互联网 发布:淘宝滞销率怎么算 编辑:程序博客网 时间:2024/06/10 09:51
不是题解 只是简单的记录下自己写过的东西~~
第一题其实主要是看你阅读水平的
给你一堆点 然后问你能不能删掉一个点然后使其余所有的点都在Y轴的一侧 很简单对吧~~
#include <iostream>#include <cstring>using namespace std;int main(){int _ , Left , Right, x , y ;Left = Right = 0;cin >>_;while (_ --) {cin >> x >> y;if (x > 0) Right ++;else Left ++;}if (Left <= 1 || Right <= 1) cout << "Yes" << endl;else cout << "No" << endl;}
第二题就比较有意思了
大概意思是这样的 给你三个数字 a b c 问你a除以b的小数部分第几位是c 如果没有 就输出-1
当时我没有想到模拟小学生除法的这种思想 但是水过去了
做法很多 找寻环节如果没找到就GG 对吧 但是找的过程中有一个鸽巢原理循环节不可能比本身还长 所以复杂度O(b)
这是出题人给的题解:
In this task you should complete long division and stop, when one period passed. Period can't be more than b by pigeonhole principle. So you need to complete b iterations and if c digit hasn't been met, print - 1.
Time complexity O(b).
我比赛时候的过法就比较神奇了:
java 大小数三百位暴力找 没有就GG
先帖一个我的非主流过法:
import java.io.*;import java.util.*;import java.math.BigDecimal;public class Main {public static void main(String[] args) throws Exception {Scanner stdin = new Scanner(System.in);double a , b;//a = a - int(a / b) * b;Integer k;a = stdin.nextDouble();b = stdin.nextDouble();k = stdin.nextInt();BigDecimal aa = new BigDecimal(Double.toString(a));BigDecimal bb = new BigDecimal(Double.toString(b));String str = aa.divide(bb , 300, BigDecimal.ROUND_HALF_UP).toString();boolean flag = true;//System.out.println(str);int Ca = 1;for (int i = 2; i < 300; i ++) {String temp = String.valueOf(k);String tt = String.valueOf(str.charAt(i));//System.out.println("temp == " + temp + "tt == " +tt);//System.out.println("temp == " + str.charAt(i));if (temp.equals(tt)) {System.out.println(Ca);flag = false;break;}Ca = Ca + 1;}if (flag == true) System.out.println(-1);}}
然后贴 个我模拟小学生除法过的代码:
#include <iostream>#include <cstring>using namespace std;const int N = 100005;int main(){ios::sync_with_stdio(0);cin.tie(0) , cout.tie(0);int a , b , c, temp, Case = 0;cin >> a >> b >> c;temp = a;memset(idx , false , sizeof(N));while (Case < 100000) {Case++;temp *= 10;int cur = temp / b;temp %= b;if (cur == c) {cout << Case <<endl;return 0;}}cout << -1 << endl;}
最后也是最犀利的解法是找循环节 tie一个cf大佬的解法吧:
人家这个写的真的简洁~(毕竟红名ORZ)
#include <cstdio>#include <iostream>#include <vector>#include <set>#include <map>#include <cmath>#include <string>#include <cstring>#include <sstream>#include <queue>#include <iomanip>#include <algorithm>using namespace std;const int Maxn = 1000005;int a, b, c;bool was[Maxn];int main(){cin >> a >> b >> c;for (int i = 1; ; i++) {a *= 10;if (was[a]) break;was[a] = true;int cur = a / b; a %= b;if (cur == c) { printf("%d\n", i); return 0; }}printf("-1\n");return 0;}
PS:写cf以来第一次+88 开心的不行 ~~
阅读全文
0 0
- Codeforces Round #450 (Div. 2) A题 + B题
- Codeforces Round #287 (Div. 2)(A,B题)
- Codeforces Round #378 (Div. 2) A B 题
- Codeforces Round #395 (Div. 2) A B题 题解
- Codeforces Round #169 (Div. 2) B题
- Codeforces Round #188 (Div. 2) B题
- Codeforces Round #218 (Div. 2) B题
- Codeforces Round #238 (Div. 2) B题
- Codeforces Round #402 (Div. 2) B题
- Codeforces Round #404 (Div. 2) B题
- Codeforces Round #446 (Div. 2) B 题
- Codeforces Round #131 (Div. 2) A B
- Codeforces Round #185 (Div. 2)--A,B
- Codeforces Round #216 (Div. 2) A.B
- Codeforces round #236Div.2--A;B
- Codeforces Round #236 (Div. 2)------A,B
- Codeforces Round #237 (Div. 2) A & B
- Codeforces Round #247 (Div. 2) A B
- c语言—指针基础(4:字符串常见定义方式)
- Linux date命令
- c语言—指针基础(5:野指针)
- KMP透彻理解
- c语言—指针基础(6:多级指针)
- Codeforces Round #450 (Div. 2) A题 + B题
- HDU 4777 Rabbit Kingdom(树状数组+离线预处理)
- c# 遍历字典改key
- 整合SpringMvc和mybatis问题:后台已传值到jsp,但显示不出来
- 给自己压力
- 【PC端vue ui框架学习】vue项目如何使用基于vue的UI框架Element
- Jquery点击按钮 异步和同步提交表单
- Cloudera Impala 编译、安装与配置
- PASCAL语言历史简述