J: Just for fun
J: Just for fun
题目描述
最近carryon在准备考研复习高数,复习到微分学的时候看到一个求曲面某点的切平面的问题。
现在有一个曲面方程如下:
AX^2 + BY^2 + CZ^2 = D
给一个在曲面上的点(x, y, z);
然后你需要计算出切面方程,并且输出;
a,b,c,d分别为他们的系数
(保证结果一定存在)
输出的格式如:(系数为零的不输出)
ax + by + cz + d = 0
输出规定最前面的未知数的参数为正数;
输入
题目要求多组输入!!!
第一行输入四个参数,A, B, C, D;(-10000 <A,B,C,D<10000, 且都不为零);
第二行输入三个参数,x, y, z;(-100 < x,y,z < 100);
输出
ax + by + cz + d = 0
样例输入
1 1 1 14
1 2 3
样例输出
x + 2y + 3z - 14 = 0 高数:解切面方程
1、先求出切面方程的法向量(2ax0,2by0,2cz0);
2、用点法式表示切面方程:2ax0(x-x0)+2by0(y-y0)+2cz0(z-z0)=0
注意几点要求:
1、第一个未知数系数一定为正
2、系数为零的不输出
3、系数为-1和1的未知数不输出1
#include<iostream>
#include<math.h>
#define ll long long
using namespace std;
ll a, b, c, d, x, y, z,A, B, C, temp;
ll gcd(ll a, ll b)
{
return b == ? a : gcd(b, a%b);
}
void check()
{
if(A==)
{
if(B==)
{
if(C<)
C=C*-,d=d*-;
}
if(B<)
B=B*-,C=C*-,d=d*-;
}
if(A<)
A=A*-,B=B*-,C=C*-,d=d*-;
}
int main()
{ while (~scanf("%lld%lld%lld%lld", &a, &b, &c, &d))
{
scanf("%lld%lld%lld", &x, &y, &z);
//ll A, B, C, temp;
A = * x*a, B = * y*b, C = * z*c;
d = A * x*- + B * y*- + C * z*-;
//A = 2 * x*a, B = 2 * y*b, C = 2 * z*c;
temp = gcd(gcd(A, B), gcd(C, d));
A = A / temp, B = B / temp, C = C / temp, d = d / temp;
check();
if(A!=&&A!=&&A!=-)
cout<<A<<'x';
if(A==)
cout<<'x';
if(A==-)
cout<<"-x";
if(B>&&B!=&&B!=-)
cout<<" + "<<B<<'y';
if(B<&&B!=&&B!=-)
cout<<" - "<<-*B<<'y';
if(B==)
cout<<'y';
if(B==-)
cout<<"-y";
if(C>&&C!=&&C!=-)
cout<<" + "<<C<<'z';
if(C<&&C!=&&C!=-)
cout<<" - "<<-*C<<'z';
if(C==)
cout<<'z';
if(C==-)
cout<<"-z";
if(d<)
cout<<" - "<<-*d;
if(d>)
cout<<" + "<<d;
cout<<" = 0"<<endl; }
return ; }
J: Just for fun的更多相关文章
- 【Java并发编程实战】-----“J.U.C”:CAS操作
CAS,即Compare and Swap,中文翻译为"比较并交换". 对于JUC包中,CAS理论是实现整个java并发包的基石.从整体来看,concurrent包的实现示意图如下 ...
- 【Java并发编程实战】-----“J.U.C”:Exchanger
前面介绍了三个同步辅助类:CyclicBarrier.Barrier.Phaser,这篇博客介绍最后一个:Exchanger.JDK API是这样介绍的:可以在对中对元素进行配对和交换的线程的同步点. ...
- 【Java并发编程实战】-----“J.U.C”:CountDownlatch
上篇博文([Java并发编程实战]-----"J.U.C":CyclicBarrier)LZ介绍了CyclicBarrier.CyclicBarrier所描述的是"允许一 ...
- 【Java并发编程实战】-----“J.U.C”:CyclicBarrier
在上篇博客([Java并发编程实战]-----"J.U.C":Semaphore)中,LZ介绍了Semaphore,下面LZ介绍CyclicBarrier.在JDK API中是这么 ...
- 【Java并发编程实战】-----“J.U.C”:ReentrantReadWriteLock
ReentrantLock实现了标准的互斥操作,也就是说在某一时刻只有有一个线程持有锁.ReentrantLock采用这种独占的保守锁直接,在一定程度上减低了吞吐量.在这种情况下任何的"读/ ...
- JAVA并发编程J.U.C学习总结
前言 学习了一段时间J.U.C,打算做个小结,个人感觉总结还是非常重要,要不然总感觉知识点零零散散的. 有错误也欢迎指正,大家共同进步: 另外,转载请注明链接,写篇文章不容易啊,http://www. ...
- Android Studio解决未识别Java文件(出现红J)问题
1.问题:java文件出现了红J的问题,正常情况下应该是显示蓝色的C标识. 2.解决方案:切换到project视图下,找到app这个module里的build.gradle,在android结构里插入 ...
- //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和
//给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和 # include<stdio.h> void main() { ,sum1; ]={,- ...
- 面试题:给定数组a,找到最大的j-i, 使a[j]>a[i]
第一种方法: 用两重循环对每对点都试一下,然后取最大值即可,时间复杂度为O(n2) #include <iostream> #include <algorithm> using ...
- 关于i和j
算法课无聊随手写了段c代码,发现了个问题,就要下课了,先记一下 for(int i = 0; i < 100; i ++) for(int j = 0; j < 100000; j ++) ...
随机推荐
- HttpClient 上传/下载文件计算文件传输进度
1.使用ProgressMessageHandler 获取进度 using namespace System.Net.Http; HttpClientHandler hand = new HttpCl ...
- 在windows上编译wireshark源代码
终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...
- SQL高性能分页
分页的场景就不多说了,无处不在. 方法一:利用row_number() with C as ( select ROW_NUMBER() over(order by orderdate,orderid) ...
- Qt之生成pdf(转)
Qt中如何让图片.文本.HTML或者其他形式的内容生成pdf呢?主要利用QPrinter来实现,QPrinter不止可以操作打印机来打印纸张文件,并且可以将文件保存至磁盘,存储为pdf格式的文件. ...
- GitHub 出现这样的问题怎么办
一开始以为是被墙,憋个半死. 后来自己好了(大概过了一上午),虚惊一场.
- WINAPI和APIENTRY是一样的
今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter); 不解为什么要用WINAPI宏定义,查了后发 ...
- MFC多线程详细讲解(转)
一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX ...
- android屏幕适配,生成不同分辨率的dimen.xml文件
一.在项目下新建moudle,选择Java Library 二.DimenUtils类 public class DimenUtils { //文件保存的路径 是在该项目下根路径下创建 比如该项目创建 ...
- Android-AIDL调用Android操作系统Music的方式来播放音乐
Android操作系统Music源码修改:把包名,各种命名都修改成自己的 修改Android操作系统Music源码,把后台播放核心服务对外暴漏: <!-- 核心服务 --> <!-- ...
- 利用PhotoShop对大图像进行等分切片
图文介绍利用PhotoShop等分切图 1.调用切片工具,右键选择划分切片 2.指定水平划分.垂直划分的等分数量,点击确定 3.在文件菜单中选择存储为... 4.配置图像质量参数.点击存储.指定存储位 ...