codeforces 577
2015-09-16 20:30
162 查看
codeforces 577A
题目链接:http://codeforces.com/problemset/problem/577/A
题目大意:给出一个n*n的表格,每个表格对应的值为横坐标*纵坐标,然后给一个数x,求数x在表格中出现了几次(具体请看题意)
题目分析:1 ≤ n ≤ 10^5, 1 ≤ x ≤ 10^9
方案一:用n*n的循环,记录每个表格中对应的数据,但时间复杂度是10^10,必定会超时,所以,排除这种方法
方案二:题目可以转化为求x的的约数有几个,x的约数最大为10
代码实现:
codeforces 577B
题目链接:http://codeforces.com/contest/577/problem/B
题目大意:给出n个数,从中挑选出一些数让它们的和是k的倍数,若能找到满足条件的输出yes,否则输出no
题目分析:如果n>k,则一定能满足条件;当n<=k,n个数组成的数可能相同,每次判断很耗时间,所以,用set容器将和全都存储起来,set容器会自动去重。
代码实现:
题目链接:http://codeforces.com/problemset/problem/577/A
题目大意:给出一个n*n的表格,每个表格对应的值为横坐标*纵坐标,然后给一个数x,求数x在表格中出现了几次(具体请看题意)
题目分析:1 ≤ n ≤ 10^5, 1 ≤ x ≤ 10^9
方案一:用n*n的循环,记录每个表格中对应的数据,但时间复杂度是10^10,必定会超时,所以,排除这种方法
方案二:题目可以转化为求x的的约数有几个,x的约数最大为10
代码实现:
#include<bits/stdc++.h> using namespace std; int main() { int ans=0; int n,x,t,a; scanf("%d %d",&n,&x); for(int i=x;i>=1;i--) { if(i>n) continue; //printf("i==%d\n",i); t=x%i; a=x/i; if(t==0&&a<=n) { // printf("a==%d\n",a); ans++; } } printf("%d\n",ans); return 0; }
codeforces 577B
题目链接:http://codeforces.com/contest/577/problem/B
题目大意:给出n个数,从中挑选出一些数让它们的和是k的倍数,若能找到满足条件的输出yes,否则输出no
题目分析:如果n>k,则一定能满足条件;当n<=k,n个数组成的数可能相同,每次判断很耗时间,所以,用set容器将和全都存储起来,set容器会自动去重。
代码实现:
相关文章推荐
- UIView 总复习
- 设计模式 工厂模式
- @ 小浩
- 猫猫学iOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介
- Java库使用----xstream1.3.1
- android学习:android Activity生命周期的七个方法测试
- 如何撰写商业计划书(精简)
- socket编程原理
- WebService之Axis2系列教程Axis2与Spring集成发布
- USACO Section 1.4 More Search Technique
- Radar Installation (贪心+数学 不错的题 )
- Count and Say
- 短信发送
- 设计模式 装饰者模式
- [家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
- Very simple problem - SGU 111(大数开方)
- Linux的SOCKET编程详解
- LNMP之memcached实现tomcat群集(三)
- c语言命名空间,cin.get().cin.getline()
- 开源框架DBUtil的使用以及使用Threadlocal类控制事务案例