微软Nokia 222:可拍只是上网 售价37美元 32GB的microSD卡扩展

(本文是由自身的旧博客搬迁过来的)

腾讯科技讯
8月27日,在几乎拥有厂商都于智能手机领域大肆拼杀的下,微软最近倒是默默地宣布了一样悠悠功能手机Nokia
222。

问题地址:http://acm.timus.ru/problem.aspx?space=1&num=1258

此时此刻,尽管全世界多发达国家的居民还对互联网就再也熟悉而了,但实际上全球仍然有好多地方的人们还从来不能抱抱这同一“新鲜事物”。对这,许多科技企业最近还试图找到能为这数十亿总人口接抱互联网的灵光措施,而针对当下部分人群推出拥有互联网接入功能的效能手机肯定是道有。

  前几乎日在博客园见到这种在线测试的早晚,有同等种近之痛感,于是随便选了一致鸣感谢兴趣的书写(No.1258:Pool)开始开。为了规范了解题的意思,我把开翻译成中文了,这道题的法则与台球很一般(由于原先常玩可乐8,所以针对台球的题材发亲切)。但未掌握为何有题人将台球问题说成了一个程序员撞墙的题材。下面是自家翻译后的,英语不好,译错的地方要见谅。

基于,微软最新发布之Nokia
222细分单SIM卡与双SIM卡有限只本子。该装备不仅拥有了着力的上网效果,同时还同意用户拍摄,并可以方便的同别人分享好玩之互联网内容。

  

图片 1

问题:

除内置有200万诸如从的后置摄像头外,Nokia 222还预装有Opera
Mini浏览器、GroupMe、Facebook、Messenger、Bing搜索以及Twitter这些核心用来满足用户的上网需求。

 

重复叫人惊叹之是,该设施的电池组续航时间非常惊人。微软代表,Nokia
222当单SIM操作环境下的电池待机时间达到了29上,而双SIM卡状态下之待机时间也齐了21龙。

1258. Pool

运作时范围: 1.0 秒
内存限制: 16 MB

图片 2

 

当午休的下,程序员Vasechkin喜欢在外的矩形房间里转悠。他由他工作的地方开散步,直到外发生矣还开始工作的念才停。我们早已解当Vasechkin撞墙时,他的倒规律相当符合“入射角等于反射角”定律。并且Vasechkin走的门道是生直的线条。凶狠的办公室主任决定找有他荒废了有些时以走走上。显然Vasechkin走过的长度除为客的平均速度(事先测量)可得出所用的工夫。所以要了解之长度!并且从Vasechkin的撞击中可知分晓的解Vasechin的相逢墙顺序。可能还有再简便的道算出程序员所浪费的岁月,但是办公室领导认为这是缓解问题之超级方法。

当通话续航方面,无论是单卡还是双卡状态下诺基亚222的通话续航时间还达成了20钟头,且内置有FM收音机和MP3音乐播放器。同时,诺基亚222用户可以每个月份打Gameloft下载同缓缓打,其中就包括《刺客信条:兄弟会》(Assassin’s
Creed Brotherhood)、《午夜台球3》(Midnight Pool 3)这些名大作。

输入

率先实践是因为少只整数W和D组成——他们分别是Vasechkin所当房间的财大气粗和增长(0<=W,D<=1000,单位:米)。
第二推行是因为Vasechkin的发端位置相对于左上角的坐标组成(0<X0<W,0<y0<D)。 
其三实践是终端相对于左上角的坐标(0<x1<W,0<y1<D),
最后之季行是因为字母L,R,F,B组成,每个字母分别表示Vasechkin撞墙的一一——左,右,上,下。
欣逢墙的次数不超1000.
本条程序员永远不会见遇见在墙角,并且他的发端位置不见面贴于墙上。

根据,诺基亚222的主要配置包括2.4英寸QVGA屏幕、支持蓝牙和高32GB的microSD卡扩展。该机器

输出

Vasechkin从起点到顶点所走之长,保留小数点后四员。

例子

input output
            10 20
            9 1
            1 19
            FLRLRB
52.8015

 

出题人: Pavel Egorov
题来源: 2003年10月11日斯维尔德洛夫斯克州大学生编程公开赛

==============================================================

简易了解就是是:给长宽,起点与终点,撞边的状况,最后要之是轨道的长短。
论下图,做辅助图后,可以较好的基于勾股定理求出斜边。
图片 3

X0,X1,Y0,Y1,W,D这些还是曾经了解的,接下去就分析碰撞顺序与这些量的关系。

X方向的运动和Y方向的可以独家分析。
X方向的个移规律找出来了,Y方向的动也是同等的。
匪相见墙时:(X0-X1)^2和(X1-X0)^2凡一模一样的,为了跟下面统一,所以管X0写在前边
图片 4

再度分析一下系数的法则:
图片 5

规律已经比显然:
X0的系数规律——先往左的早晚啊正1,先为右侧的当儿也负1。
X1的系数规律——碰撞次数为偶数的时与X0系数异号,奇数时同号。
W的系数规律——R个数乘以2。

Y方向的规律为是如此。

解析及这,已经可以在先后中方便之兑现这些逻辑了。

下面是本身勾勒的代码,如果按照科学格式输入,结果是天经地义的。
只是切莫亮怎么,提交到ACM系统面临报错,也不知情不当是呀,调试不了,我早已是豪情了了。哪位朋友要运行成功了或者发现错误了,一定要是报我生。
发一个问题,题中要求结果保留4各小数,但自身没看下是“四放弃五符合”还是“直接放弃去”,但自我点儿种植都试了,都说答案有误。

脚是代码:

 1 using System;
 2 namespace ACM1258
 3 {
 4     class Program
 5     {
 6         static void Main()
 7         {
 8             System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
 9             
10             double result;    //输出
11             double sideX, sideY;   //两个直角边
12             double X0,X1,Y0,Y1,W,D;   //各个参数
13             string flrb;    //撞墙顺序
14             int coeffX0=0,coeffX1=0,coeffY0=0,coeffY1=0,coeffW=0,coeffD=0;  //各个系数
15             bool checkLorR= true,checkForB= true;  //是否检查第一个LR、FB
16             bool LFirst= false,FFirst= false;      //判断第一个撞哪边
17             bool FBpair= true,LRpair=true;         //F与B、L与R的个数是否相等;
18 
19             string[] temp;
20             temp = Console.ReadLine().Split();               //[0]:W   [1]:D
21             W=Convert.ToDouble(temp[0]);
22             D=Convert.ToDouble(temp[1]);
23             temp = Console.ReadLine().Split();              //[0]:X0  [1]:Y0
24             X0=Convert.ToDouble(temp[0]);
25             Y0=Convert.ToDouble(temp[1]);
26             temp = Console.ReadLine().Split();               //[0]:X1  [1]:Y1
27             X1=Convert.ToDouble(temp[0]);
28             Y1=Convert.ToDouble(temp[1]);
29             flrb = Console.ReadLine();
30             
31             for (int i = 0; i < flrb.Length; i++)
32             {
33                 switch (flrb[i])
34                 {
35                     case 'F':
36                         if (checkForB)
37                         {
38                             FFirst = true;
39                             checkForB = false;
40                         }
41                         FBpair = !FBpair;
42                         break;
43                     case 'L':
44                         if (checkLorR)
45                         {
46                             LFirst = true;
47                             checkLorR = false;
48                         }
49                         LRpair = !LRpair;
50                         break;
51                     case 'R':
52                         if (checkLorR)
53                         {
54                             LFirst = false;
55                             checkLorR = false;
56                         }
57                         LRpair = !LRpair;
58                         coeffW++;
59                         break;
60                     case 'B':
61                         if (checkForB)
62                         {
63                             FFirst = false;
64                             checkForB = false;
65                         }
66                         FBpair = !FBpair;
67                         coeffD++;
68                         break;
69                     default:
70                         break;
71                 }
72             }
73 
74             coeffX0 = LFirst ? 1 : -1;
75             coeffX1 = LRpair ? -coeffX0 : coeffX0;
76             coeffY0 = FFirst ? 1 : -1;
77             coeffY1 = FBpair ? -coeffY0 : coeffY0;
78 
79             sideX = (coeffX0 * X0 + coeffX1 * X1) + coeffW * 2 * W;
80             sideY = (coeffY0 * Y0 + coeffY1 * Y1) + coeffD * 2 * D;
81             
82             result = Math.Sqrt(sideX*sideX+sideY*sideY);
83             //result = ((int)(result * 10000)) / 10000.0;   //这是直接舍去的,否则就是四舍五入
84             Console.WriteLine(result.ToString("F4"));
85         }
86     }
87 }

 

运转题中之测试用例结果:

图片 6