当前位置: 首页 > news >正文

码题集——魔数、A的B次方、网球比赛、三角形、点与线段的关系

目录

MT1173 魔数

 MT1174 A的B次方

MT1175 网球比赛

 MT1177 三角形

MT1178 点与线段的关系


MT1173 魔数

一个数字,把他乘以二,会得到一个新的数字,如果这个新数字依然由原数中那些数字组成,就称原数为一个魔数。输入正整数N,检查它是否是一个魔数,输出YES或者NO。

格式

输入格式:输入正整数N

输出格式:输出YES或者NO

样例 1

输入:142857

输出:YES

思路:数由0~9组成,所以可以使用数组,将数组下标设为某数位,值为该数位数的个数,再进行遍历判断两个数组的各个位置的值是否相同。

此方法可以满足题目隐含条件,即每个数字出现的次数与原来数字出现次数相同

注意!!数组一定要初始化为0,如果不将其初始化,当该数不存在某数时系统会为其值随机生成一个数,会影响后续的判断

#include<bits/stdc++.h> using namespace std;int main( )
{int n;cin>>n;int m=n*2;int a[10]={0},b[10]={0};//一定要初始化为0//因为该数不一定有某数,此时系统会随机生成数字,会影响结果的判断while(n){a[n%10]++;n/=10;}while(m){b[m%10]++;m/=10;}for(int i=0;i<9;i++)if(a[i]!=b[i]){cout<<"NO";return 0;}cout<<"YES";return 0;
}

 MT1174 A的B次方

输入正整数N,判断它是否可以表示为A的B次方,其中B>1,A>0,都是整数。输出YES或者NO。

格式

输入格式:输入正整数N

输出格式:输出YES或者NO

样例 1

输入:6

输出:NO

能通过所有样例:

#include<bits/stdc++.h> using namespace std;int n;int main( )
{cin>>n;for(int i=1;i<1000;i++)for(int j=2;j<1000;j++)if(pow(i,j)==n){cout<<"YES";return 0;}cout<<"NO";return 0;
}

第三个样例超时,不知道为什么: 

#include<bits/stdc++.h> using namespace std;int n;bool check(int x)
{int tmp=1;while(1){tmp*=x;if(tmp==n)return true;if(tmp>n)return false;}
}
int main( )
{cin>>n;if(n==1){cout<<"YES";return 0;}for(int i=2;i<=n/2;i++)if(check(i)){cout<<"YES";return 0;} cout<<"NO";return 0;
}

MT1175 网球比赛

两个网球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三对赛手的名单。

格式

输入格式:无

输出格式:分3行输出,见样例

样例 1

输入:无

输出:

a with z
b with x
c with y

思路:

分别设两个数组,将a,b,c和x,y,z都看作0,1,2,此时在循环中又都看做i,j,k

 易知,i!=j && i!=k && j!=k

又有a不与x比,c不与x,z比,则i!=0,k!=0,k!=2

#include<bits/stdc++.h> using namespace std;int n;int main( )
{char a[3]={'a','b','c'};char b[3]={'x','y','z'};for(int i=0;i<3;i++)for(int j=0;j<3;j++)for(int k=0;k<3;k++)if(i!=j&&i!=k&&j!=k&&i!=0&&k!=0&&k!=2){cout<<a[0]<<" with "<<b[i]<<endl;cout<<a[1]<<" with "<<b[j]<<endl;cout<<a[2]<<" with "<<b[k]<<endl;}return 0;
}

 MT1177 三角形

输入三角形的三个顶点坐标,和点N的坐标。判断N是否位于三角形内,输出YES或者NO。

格式

输入格式:

第一行输入三角形的三个顶点坐标(x1,y1),(x2,y2)和(x3,y3),第二行输入点N的坐标,整型,空格分隔。

输出格式:输出YES或者NO

样例 1

输入:

0 0 20 0 10 30  
10 15

输出:YES

思路:

1.面积法:

        将该点与三角相连,算出三个三角形的面积并相加,判断其是否小于等于该三角形面积(不是等于,当点在线上时面积是0) 

2.同向法(叉乘法):

3.重心坐标法:

 面积法:

#include<bits/stdc++.h> using namespace std;int n;double check(int x1,int y1,int x2,int y2,int x3,int y3)
{return abs(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2.0;
}
int main( )
{int x1,y1,x2,y2,x3,y3;cin>>x1>>y1>>x2>>y2>>x3>>y3;int a,b;cin>>a>>b;double s1=check(x1,y1,x2,y2,a,b);double s2=check(x1,y1,x3,y3,a,b);double s3=check(x3,y3,x2,y2,a,b);double s=check(x1,y1,x2,y2,x3,y3);if(s1+s2+s3<=s)cout<<"YES";elsecout<<"NO";return 0;
}

MT1178 点与线段的关系

输入线段的2个端点的坐标值x和y,再输入第3个点的坐标,判断点在不在线段上,输出YES或者NO。

格式

输入格式:按照先起点(x,y)再终点(x,y)的次序。第二行输入第3个点的坐标。坐标整型。第一行两点之间空格,如样例所示。

输出格式:输出YES或者NO

样例 1

输入:

(-20,20) (-20,-10)
(0,0) 

输出:NO

思路:

判断是否在线段上:

1.中间一点与旁边两个距离之和等于线段长度。

2. 向量法

注意!!易错点:

没有说是整型一定要以实数输入。

输入格式:

错的:

    double x1,y1,x2,y2;
    double a,b;
    scanf("(%lf,%lf) (%lf,%lf)",&x1,&y1,&x2,&y2);
    scanf("(%lf,%lf)",&a,&b);

对的:

    double x1,y1,x2,y2;
    double a,b;
    scanf("(%lf,%lf) (%lf,%lf) \n (%lf,%lf)",&x1,&y1,&x2,&y2,&a,&b); 

#include<bits/stdc++.h>
using namespace std;int main()
{double x1,y1,x2,y2;double a,b;scanf("(%lf,%lf) (%lf,%lf)",&x1,&y1,&x2,&y2);scanf("(%lf,%lf)",&a,&b);double l=sqrt(pow((x1-x2),2.0)+pow((y1-y2),2.0));double l1=sqrt(pow(x1-a,2.0)+pow(y1-b,2.0));double l2=sqrt(pow(x2-a,2.0)+pow(y2-b,2.0));if(l1+l2==l)cout<<"YES";elsecout<<"NO";return 0;
}

 

http://www.xdnf.cn/news/447175.html

相关文章:

  • libmemcached库api接口讲解五
  • Java Queue 接口实现
  • 【经验分享】Dify+GraphRAG实现知识图谱智能问答
  • QMK键盘编码器(Encoder)(理论部分)
  • Unity Image组件无法阻挡手势的解决办法
  • 如何在运行不同操作系统的计算机上轻松擦除U盘
  • 【行为型之观察者模式】游戏开发实战——Unity事件驱动架构的核心实现策略
  • 医学影像系统的集成与工作流优化
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(一)过程式凹凸贴图
  • Unity引擎源码-物理系统详解-其二
  • 大疆无人机自主飞行解决方案局限性及增强解决方案-AIBOX:特色行业无人机巡检解决方案
  • 蚓链数字化营销系统深度解析,以“三位一体“模式驱动企业数字化营销转型
  • UniApp 在华为三折叠屏中的适配问题与最佳解决方案(rpx 实战指南)
  • ET MessageSender类(实体)分析
  • LLM笔记(一)基本概念
  • vue-cli项目升级rsbuild,效率提升50%+
  • 文章记单词 | 第74篇(六级)
  • uniapp设置 overflow:auto;右边不显示滚动条的问题
  • 多线程与线程互斥
  • PROE 转 STP 全攻略:软件实操、在线转换与问题解决
  • 学习日志06 java
  • 辛格迪客户案例 | 碧博生物实施用友ERP(U8)系统,同步开展计算机化系统验证(CSV)
  • 数学建模初等模型应用
  • ai agent(智能体)开发 python3基础16:通过最基本的request,json连链接本地模型 ollama中的deepseek-r1:8b
  • 高压差分探头CMRR性能评估方法及优化策略
  • 微服务如何实现服务的高可用
  • html js 原生实现web组件、web公共组件、template模版插槽
  • 【嵌入式开发-软件定时器】
  • Java内存马的检测与发现
  • GraphPad Prism简介、安装与工作界面