problem counterexample
desscribe
求l<=a<b<c<=r,且gcd(a,b)=gcd(b,c)=1,gcd(a,c)!=1的任意一组a,b,c。
#include<iostream>
#include<cstdio>
using namespace std;
long long gcd(long long a,long long b)
{
if(b==0)return a;
return gcd(b,a%b);
}
int main()
{
long long l,r;
cin>>l>>r;
for(long long i=l;i<=r;i++) //枚举 a
for(long long j=i;j<=r;j++) //枚举 b
for(long long k=j;k<=r;k++) //枚举 c
{
if(gcd(i,j)==1&&gcd(j,k)==1&&gcd(i,k)!=1)
{
cout<<i<<" "<<j<<" "<<k;
return 0;
}
}
cout<<-1;
return 0;
}
problem initial bet
describe
有五个人在玩游戏 每个人一开始有 b 个硬币 有一种操作是把一个硬币给另一个人 给你所有人经过若干次操作的硬币数 0≤c[i]≤100)求正整数 b,若无解输出 −1。
#include<bits/stdc++.h>
using namespace std;
int a[6],s=0;
int main()
{
for(int i=1;i<=5;i++)
{
cin>>a[i];
s+=a[i];
}
if(s%5==0&&s)
{
cout<<s/5;
return 0;
}
cout<<-1;
return 0;
}
problem dreamoon and stairs
describe
题面 DM小朋友想要上一个有 n 级台阶的楼梯。他每一步可以上 1 或 2 级台阶。假设他走上这个台阶一共用了 x 步。现在DM想知道 x 是否可能为 m 的倍数。如果可能,输出 x 的最小值。如果不可能,输出 −1 输入 两个正整数 n,m (n<=10000,m<=10) 输出 按要求输出
x 或 −1。
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m,x,ccf=0;
cin>>n>>m;
if(n&1) ccf=1;
int mn=n/2+ccf,mx=n;
for(int i=mn;i<=mx;i++) {
if(i%m==0) {
cout<<i<<endl;
return 0;
}
}
puts("-1");
return 0;
}
problem calculating function
describe
对于正整数n,我们定义函数f:f(n)=-1+2-3+…+(-1)n*n;你的任务使计算f(n)。
#include<bits/stdc++.h>
using namespace std;
long long int a;
int main()
{
cin>>a;
if(a%2==0)
{
cout<<a/2<<endl;
}
else
{
cout<<-a/2-1<<endl;
}
return 0;
}
problem dreamoon and wifi
describe
Dreamoon站在位置0,他想知道Wifi在哪儿,于是Drazil给他发了条短信告诉他怎么走,‘+‘代表向前走一个,’-‘代表向后走一格。可是Dreamoon收到的短信中有错误或者未识别的字符,即’?’。Dreamoon如果遇到未识别的字符他就会等概率地向前或向后走一个,问他有多大的概率找到Wifi,答案误差不能超过1e−9
#include<bits/stdc++.h>
using namespace std;
int n,k,ans,sum;
char a[15],b[15];
void dfs(int x,int cnt){
if(x>n){
sum++;
if(cnt==k)ans++;
return;
}
if(b[x]=='+')dfs(x+1,cnt+1);
else if(b[x]=='-')dfs(x+1,cnt-1);
else{
dfs(x+1,cnt-1);
dfs(x+1,cnt+1);
}
}
signed main()
{
scanf("%s%s",a+1,b+1);
n=strlen(a+1);
for(int i=1;i<=n;i++){
if(a[i]=='+')k++;
else k--;
}
dfs(1,0);
printf("%.7lf",1.0*ans/sum);
return 0;
}