程式設計之美初賽(第一場) 焦距

2021-06-21 14:49:00 字數 1597 閱讀 2899

時間限制:

2000ms

單點時限:

1000ms

記憶體限制:

256mb

一般來說,我們採用針孔相機模型,也就是認為它用到的是小孔成像原理。

在相機座標系下,一般來說,我們用到的單位長度,不是「公尺」這樣的國際單位,而是相鄰畫素的長度。而焦距在相機座標系中的大小,是在影象處理領域的乙個非常重要的物理量。

假設我們已經根據相機引數,得到鏡頭的物理焦距大小(focal length),和相機膠片的寬度(ccd width),以及**的橫向解析度(image width),則具體計算公式為:

focal length in pixels = (image width in pixels) * (focal length on earth) / (ccd width on earth)

比如說對於canon powershot s100, 帶入公式得

focal length in pixels = 1600 pixels * 5.4mm / 5.27mm = 1639.49 pixels

現在,請您寫一段通用的程式,來求解焦距在相機座標系中的大小。

多組測試資料。首先是乙個正整數t,表示測試資料的組數。

每組測試資料佔一行,分別為

鏡頭的物理焦距大小(focal length on earth)

相機膠片的寬度(ccd width on earth)

**的橫向解析度大小(image width in pixels),單位為px。

之間用乙個空格分隔。

每組資料輸出一行,格式為「case x: ypx」。 x為測試資料的編號,從1開始;y為焦距在相機座標系中的大小(focallength in pixels),保留小數點後2位有效數字,四捨五入取整。

對於小資料:focal length on earth和ccd width on earth單位都是公釐(mm)

對於大資料:長度單位還可能為公尺(m), 分公尺(dm), 厘公尺(cm), 公釐(mm), 微公尺(um),奈米(nm)

樣例輸入

2

5.4mm 5.27mm 1600px

5400um 0.00527m 1600px

樣例輸出

case 1: 1639.47px

case 2: 1639.47px

開始的時候沒有注意輸出的格式wrong了好多次。悲劇的人生呀。。。

#include#include#include#include#includeusing namespace std;

int main()

if(a=="dm")

if(a=="cm")

if(a=="um")

if(a=="nm")

if(b=="m")

if(b=="dm")

if(b=="cm")

if(b=="um")

if(b=="nm")

double len=p*x1/x2;

printf("case %d: %.2lfpx\n",m,len);

}return 0;

}

程式設計之美初賽第一場 焦距

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 一般來說。我們採用針孔相機模型,也就是覺得它用到的是小孔成像原理。在相機座標系下,一般來說,我們用到的單位長度。不是 公尺 這種國際單位,而是相鄰畫素的長度。而焦距在相機座標系中的大小,是在影象處理領域的乙個很重要的物理量。如果...

程式設計之美初賽第一場

時間限制 12000ms 單點時限 6000ms 記憶體限制 256mb a市是乙個高度規劃的城市。可是科技高階發達的地方,居民們也不能忘記運動和鍛鍊,因此城市規劃局在設計a市的時候也要考慮為居民們建造乙個活動中心。方便居住在a市的居民們能隨時開展運動。鍛鍊強健的身心。城市規劃局希望活動中心的位置滿...

2014程式設計之美初賽第一場

時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb 一般來說,我們採用針孔相機模型,也就是認為它用到的是小孔成像原理。在相機座標系下,一般來說,我們用到的單位長度,不是 公尺 這樣的國際單位,而是相鄰畫素的長度。而焦距在相機座標系中的大小,是在影象處理領域的乙個非常重要的物理量。...