挑战变成设计->2.6 数学问题的解题窍门->线段上格点的个数
来源:互联网 发布:创建域名邮箱 编辑:程序博客网 时间:2024/05/18 02:04
#include<stdio.h>int gcd(int a,int b){ return b?gcd(b,a%b):a;}int min(int a,int b){ return a>b?b:a;}int max(int a,int b){ return a>b?a:b;}int miners(int a,int b){ return (a-b>0)?(a-b):(b-a);}int main(){ int x1,y1,x2,y2; while (~scanf("%d%d%d%d",&x1,&y1,&x2,&y2)) { int gcd_x=miners(x1,x2)/gcd(miners(x1,x2),miners(y1,y2)),x; int gcd_y=miners(y1,y2)/gcd(miners(x1,x2),miners(y1,y2)),y; //printf("~~~%d~~~\n",gcd_x); //printf("~~~%d~~~\n",gcd_y); if (x1==x2&&y1==y2)//两个点坐标相等,输出原来的点 printf("(%d,%d)\n",x1,y1); else if (x1==x2)//斜率不存在时 { x=x1,y=min(y1,y2)+1; while (y<max(y1,y2)) { printf("(%d,%d)\n",x,y); y++; } } else if (y1==y2)//斜率存在且为0时 { x=min(x1,x2)+1,y=y1; while (x<max(x1,x2)) { printf("(%d,%d)\n",x,y); x++; } } if (x1<x2&&y1<y2) { x=x1+gcd_x,y=y1+gcd_y; while (x<x2) { printf("(%d,%d)\n",x,y); x+=gcd_x; y+=gcd_y; } } else if (x1<x2&&y1>y2) { x=x1+gcd_x,y=y1-gcd_y; while (x<x2) { printf("(%d,%d)\n",x,y); x+=gcd_x; y-=gcd_y; } } } return 0;}
0 0
- 挑战变成设计->2.6 数学问题的解题窍门->线段上格点的个数
- 线段上格点的个数
- 线段上格点的个数
- 小学数学解题思维窍门
- ACM 线段上格点的个数
- 编程题-线段上格点的个数-最大公约数
- 使用最大公约数求线段上格点的个数
- 数学问题1:n排列的第k个数
- 十个做网页设计的小窍门
- NYOJ206 矩形的个数 【数学】
- 整数N的因子个数和N!的因子个数(数学问题)
- 诺基亚的问题、挑战、未来
- 【数学建模】CUMCM-2016A 系泊系统的设计 解题思路整理
- Lintcode解题笔记 - 岛屿的个数
- 退格键变成^H的问题
- 超有趣的数学天才解题!
- 最好用的SAT数学解题方法
- 挑战庞果英雄会之子序列的个数
- win8.1 体验Hyper-V
- [深入理解计算机系统]Hello World的一生
- 第七周项目三(1)
- 发动短信内容截取方法
- Repo脚本分析
- 挑战变成设计->2.6 数学问题的解题窍门->线段上格点的个数
- PreferenceScreen的学习
- chapter 4第一部分
- 获取一个整型数组前三个最大的值
- Algorithm学习笔记 --- DNAsorting
- hadoop-2.2.0伪分布式与(全分布集群安装于配置续,很详细的哦~)
- 面向对象——多态
- IOS开发 iphone手机屏幕相关知识
- shell算数运算