2012程序设计竞赛基础实训81

上传人:mg****85 文档编号:35299929 上传时间:2018-03-13 格式:DOC 页数:11 大小:94KB
返回 下载 相关 举报
2012程序设计竞赛基础实训81_第1页
第1页 / 共11页
2012程序设计竞赛基础实训81_第2页
第2页 / 共11页
2012程序设计竞赛基础实训81_第3页
第3页 / 共11页
2012程序设计竞赛基础实训81_第4页
第4页 / 共11页
2012程序设计竞赛基础实训81_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《2012程序设计竞赛基础实训81》由会员分享,可在线阅读,更多相关《2012程序设计竞赛基础实训81(11页珍藏版)》请在金锄头文库上搜索。

1、2012 程序设计竞赛基础实训程序设计竞赛基础实训 823939 台球碰撞台球碰撞在平面直角坐标系下,台球桌是一个左下角在在平面直角坐标系下,台球桌是一个左下角在(0,0)(0,0),右上角在,右上角在( (L L, ,W W) )的矩的矩 形。有一个球心在形。有一个球心在( (x x, ,y y) ),半径为,半径为R R的圆形母球放在台球桌上(整个球都在台球的圆形母球放在台球桌上(整个球都在台球 桌内)桌内) 。受撞击后,球沿极角为。受撞击后,球沿极角为b b的射线(即:的射线(即:x x正半轴逆时针旋转到此射线的正半轴逆时针旋转到此射线的 角度为角度为b b)以初速度)以初速度 v v

2、飞出。因球与桌面的磨擦,球作的加速度为飞出。因球与桌面的磨擦,球作的加速度为 a a 的匀减速的匀减速 率运动,每次碰到球桌边框时均发生完全弹性碰撞(反射角等于入射角)率运动,每次碰到球桌边框时均发生完全弹性碰撞(反射角等于入射角) 。 试求球停止时球心所在位置。试求球停止时球心所在位置。输入:输入: l=180,w=120,x=35,y=40,r=5,b=30,v=27,a=6l=180,w=120,x=35,y=40,r=5,b=30,v=27,a=6原题:原题: 在平面直角坐标系下,台球桌是一个左下角在在平面直角坐标系下,台球桌是一个左下角在(0,0)(0,0),右上角在,右上角在( (

3、L L, ,W W) )的矩的矩 形。有一个球心在形。有一个球心在( (x x, ,y y) ),半径为,半径为R R的圆形母球放在台球桌上(整个球都在台球的圆形母球放在台球桌上(整个球都在台球 桌内)桌内) 。受撞击后,球沿极角为。受撞击后,球沿极角为a a的射线(即:的射线(即:x x正半轴逆时针旋转到此射线的正半轴逆时针旋转到此射线的 角度为角度为a a)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射 角等于入射角)角等于入射角) 。如果球的速率为如果球的速率为v v,s s个时间单位之后球心在什么地方?个时间单位之

4、后球心在什么地方?输入输入 输入文件最多包含输入文件最多包含 2525 组测试数据,每个数据仅一行,包含组测试数据,每个数据仅一行,包含 8 8 个正整数个正整数 L L, ,W W, ,x x, ,y y, ,R R, ,a a, ,v v, ,s s(100 #include#include voidvoid main()main() doubledouble l,w,r,a,v,s,x,y,x1,x2,y1,y2;l,w,r,a,v,s,x,y,x1,x2,y1,y2;printf(“printf(“ 请确定球台边框请确定球台边框(l,w):(l,w): “);“); scanf(“%l

5、f,%lf“,scanf(“%lf,%lf“,printf(“printf(“ 请确定球心开始位置请确定球心开始位置(x,y):(x,y): “);“);scanf(“%lf,%lf“,scanf(“%lf,%lf“, printf(“printf(“ 请确定球半径请确定球半径 r:r: “);“); scanf(“%lf“,scanf(“%lf“,printf(“printf(“ 请确定射击角度请确定射击角度 a:a: “);“); scanf(“%lf“,scanf(“%lf“,printf(“printf(“ 请确定射击速度请确定射击速度 v:v: “);“); scanf(“%lf“,

6、scanf(“%lf“,printf(“printf(“ 请确定时间请确定时间 s:s: “);“); scanf(“%lf“,scanf(“%lf“,x1=r;x2=l-r;y1=r;y2=w-r;x1=r;x2=l-r;y1=r;y2=w-r;x=x+v*s*cos(a*3.1415926/180);x=x+v*s*cos(a*3.1415926/180);y=y+v*s*sin(a*3.1415926/180);y=y+v*s*sin(a*3.1415926/180);while(xx2xx2 | yy2)yy2)if(xx2)if(xx2) x=2*x2-x;x=2*x2-x;if(x

7、y2)if(yy2) y=2*y2-y;y=2*y2-y;if(y #include#include voidvoid main()main() doubledouble l,w,r,a,b,v,s,x,y,x1,x2,y1,y2;l,w,r,a,b,v,s,x,y,x1,x2,y1,y2;printf(“printf(“ 请确定球台边框请确定球台边框(l,w):(l,w): “);“); scanf(“%lf,%lf“,scanf(“%lf,%lf“,printf(“printf(“ 请确定球心开始位置请确定球心开始位置(x,y):(x,y): “);“); scanf(“%lf,%lf“,

8、scanf(“%lf,%lf“, printf(“printf(“ 请确定球半径请确定球半径 r:r: “);“); scanf(“%lf“,scanf(“%lf“,printf(“printf(“ 请确定射击角度请确定射击角度 b:b: “);“); scanf(“%lf“,scanf(“%lf“,printf(“printf(“ 请确定射击初速度请确定射击初速度 v:v: “);“); scanf(“%lf“,scanf(“%lf“,printf(“printf(“ 请确定匀减速的加速度请确定匀减速的加速度 a:a: “);“); scanf(“%lf“,scanf(“%lf“,x1=r;

9、x2=l-r;y1=r;y2=w-r;x1=r;x2=l-r;y1=r;y2=w-r;s=s= v*v/2/a;v*v/2/a;x=x+s*cos(b*3.1415926/180);x=x+s*cos(b*3.1415926/180);y=y+s*sin(b*3.1415926/180);y=y+s*sin(b*3.1415926/180);while(xx2xx2 | yy2)yy2)if(xx2)if(xx2) x=2*x2-x;x=2*x2-x;if(xy2)if(yy2) y=2*y2-y;y=2*y2-y;if(y1a1) ,求出其平方数,求出其平方数 s s; 计算计算 a a 的

10、位数的位数 w w,同时计算,同时计算 b=10wb=10w,a a 的平方的平方 s s 的尾部的尾部 c=s%bc=s%b; 比较比较 a a,c c,若,若 a=ca=c 则输出守形数。则输出守形数。 (2 2) 程序实现程序实现 / 求求x,yx,y内的守形数内的守形数 #include#include voidvoid main()main() longlong intint a,b,c,k,s,x,y;a,b,c,k,s,x,y;printf(“printf(“ 求区间求区间x,yx,y中的守形数中的守形数.“);.“);printf(“printf(“ 请输入整数请输入整数 x,

11、y:“);x,y:“);scanf(“%ld,%ld“,scanf(“%ld,%ld“,for(a=x;a0)while(k0)b=b*10;k=k/10;b=b*10;k=k/10;c=s%b;c=s%b; / c c 为为 a a 的平方数的平方数 s s 的尾部的尾部 if(a=c)if(a=c)printf(“%ld2=%ldprintf(“%ld2=%ld n“,a,s);n“,a,s); (3 3) 程序运行结果程序运行结果 求区间求区间x,yx,y中的守形数中的守形数. .请输入整数请输入整数 x,y:10,10000x,y:10,10000 252=625252=625 762

12、=5776762=5776 3762=1413763762=141376 6252=3906256252=390625 93762=8790937693762=879093762.2. 探索探索 n n 位守形数位守形数 (1)1) 求解要点求解要点 为了求更多位数的守形数,可应用守形数的性质:一个为了求更多位数的守形数,可应用守形数的性质:一个 m m 位守形数的尾部位守形数的尾部 m-1m-1 位数也是一个守形数。位数也是一个守形数。 道理很简单,道理很简单,a a 是一个是一个 m m 位数,位数,a a 的平方数尾部的的平方数尾部的 m-1m-1 位仅由位仅由 a a 的尾部的尾部 m

13、-1m-1 位决定而与位决定而与 a a 的其他位无关。的其他位无关。 实施易知一位守形数有三个:实施易知一位守形数有三个:1,5,61,5,6。则二位守形数的个位数字只可能是。则二位守形数的个位数字只可能是 1,5,61,5,6 这三个数字。根据这一思路,我们可应用递推求出多位守形数。这三个数字。根据这一思路,我们可应用递推求出多位守形数。 (2)2) 程序设计程序设计 / 求求 n n 位守形数位守形数 #include#include voidvoid main()main() intint n,d,k,j,i,t,m,w,z,u,v,a500,b500,c500;n,d,k,j,i,t

14、,m,w,z,u,v,a500,b500,c500;printf(“n=“);scanf(“%d“,printf(“n=“);scanf(“%d“,for(d=1;d=1;k-)for(k=n;k=1;k-)printf(“%d“,ak);printf(“%d“,ak); printf(“n“);printf(“n“); (3 3) 程序运行示例程序运行示例 运行程序,运行程序, 输入输入 n=30n=30,得,得 3030 位守形数位守形数5 5 结尾的结尾的 3030 守形数守形数: : 106619977392256259918212890625106619977392256259918

15、2128906256 6 结尾的结尾的 3030 守形数守形数: : 8933800226077437400817871093768933800226077437400817871093764141 奇数序列运算式奇数序列运算式在由指定相连奇数在由指定相连奇数组成的序列的每相邻两项中插入运算符号:组成的序列的每相邻两项中插入运算符号: 若相邻两项都是合数,则两项中插入若相邻两项都是合数,则两项中插入“-”“-”号;号; 若相邻两项一项合数一项素数,则两项中插入若相邻两项一项合数一项素数,则两项中插入“+”“+”号;号; 若相邻两项都是素数,则两项中插入乘号若相邻两项都是素数,则两项中插入乘号“*”“*”号;号;输入奇数输入奇数 b,c(b #include#include voidvoid main()main() intint b,c,f,m,n,k,i,j,aN;b,c,f,m,n,k,i,j,aN; longlong t,s;t,s;printf(“printf(“ 请输入首尾奇数请输入首尾奇数 b,c(b #include#include voidvoid main

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号