Vijos之暴力枚举

https://vijos.org/p/%E6%9E%9A%E4%B8%BE

P1116一元三次方程求解描述

有形如:ax^3+bx^2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

格式

输入格式

输入该方程中各项的系数(a,b,c,d 均为实数),

输出格式

由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

样例1

样例输入1[复制]

1 -5 -4 20
样例输出1 [复制]
-2.00 2.00 5.00

限制

每个测试点1s

提示

提示:记函数f(x),若存在2个实数x1和x2,且x1<x2,使f(x1)*(x2)<0,则在(x1, x2)之间一定存在实数x0使得f(x0)=0。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<cmath>
#include<stdlib.h>
#include<iomanip>
#include<list>
#include<deque>
#include<map>
#include <stdio.h>
#include <queue>
#include <stack>
#define maxn 10000+5
#define ull unsigned long long
#define ll long long
#define reP(i,n) for(i=1;i<=n;i++)
#define rep(i,n) for(i=0;i<n;i++)
#define cle(a) memset(a,0,sizeof(a))
#define mod 90001
#define PI 3.141592657
#define INF 1<<30
const ull inf = 1LL << 61;
const double eps=1e-3;
const double e=1e-2;

using namespace std;

bool cmp(int a,int b)
{
return a>b;
}
int main()
{
//#ifndef ONLINE_JUDGE
//freopen("in.txt","r",stdin);
//#endif
//freopen("out.txt","w",stdout);
double a,b,c,d,f;
while(cin>>a>>b>>c>>d){
double x;
int num=0;
for(x=-100.00;x<=100.00;x+=e){
f=a*x*x*x+b*x*x+c*x+d;
if(f<=eps&&f>=-eps){
if(num==2)printf("%.2lf\n",x);
else printf("%.2lf ",x),num++;
}
}
}
return 0;
}

P1131最小公倍数和最大公约数问题

描述

输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。

条件:1.P、Q是正整数
2.要求P、Q以xO为最大公约数,以yO为最小公倍数。

试求,满足条件的所有可能的两个正整数的个数。

格式

输入格式

两个正整数

输出格式

满足条件的所有可能的两个正整数的个数

样例1

样例输入1[复制]

3 60
样例输出1 [复制]
4

限制

每个测试点1s

提示

说明:(不用输出)此时的 P Q 分别为:
3 60
15 12
12 15
60 3
所以,满足条件的所有可能的两个正整数的个数共4种

思路:解这道题目的时候  用到公式lcm(a,b)*gcd(a,b)=a*b  然后吗,枚举a或b

/* ***********************************************
Author :
Created Time :2015/5/26 8:02:37
File Name :1.cpp
************************************************ */

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <iomanip>
#include <list>
#include <deque>
#include <stack>
#define ull unsigned long long
#define ll long long
#define mod 90001
#define INF 1<<30
#define maxn 10000+10
#define cle(a) memset(a,0,sizeof(a))
const ull inf = 1LL << 61;
const double eps=1e-5;
using namespace std;

bool cmp(int a,int b){
return a>b;
}
int gcd(int a,int b){
return a==0?b:(gcd(b%a,a));
}
int main()
{
//#ifndef ONLINE_JUDGE
//freopen("in.txt","r",stdin);
//#endif
//freopen("out.txt","w",stdout);
ll y0,x0,ans;
ll y;
while(scanf("%I64d%I64d",&x0,&y0)!=EOF){
ans=0;
for(int i=x0;i<=y0;i++){
if(y0%i==0&&i%x0==0){
y=x0*y0/i;
if(gcd(i,y)==x0)ans++;
}
}
printf("%I64d\n",ans);
}
return 0;
}

你可能感兴趣的:(Vijos之暴力枚举)