您的位置:首页 > 其它

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

代码实现:

#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容器会自动去重。

代码实现:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: