一般来说，我们採用针孔相机模型，也就是觉得它用到的是小孔成像原理。在相机坐标系下。一般来说，我们用到的单位长度，不是“米”这种国际单位，而是相邻像素的长度。

2
5.4mm   5.27mm    1600px
5400um  0.00527m  1600px

Case 1: 1639.47px
Case 2: 1639.47px

本题求焦距，简单。没什么说的。注意可能出现的大数，我保险起见用了Java。结果费了非常多时间。只是也学了也谢BigDecimal的使用方法，得不偿失啊。好久没做题，感觉不太适应。

```import java.math.BigDecimal;
import java.util.Scanner;

public class Main{

public static void main(String[] str)
{
Scanner input=new Scanner(System.in);
BigDecimal nm=new BigDecimal("0.000000001");
BigDecimal um=new BigDecimal("0.000001");
BigDecimal mm=new BigDecimal("0.001");
BigDecimal cm=new BigDecimal("0.01");
BigDecimal dm=new BigDecimal("0.1");
String str1,str2,str3;
int tag=0;
int cas=input.nextInt();
while(--cas>=0)
{
str1=input.next();
str2=input.next();
str3=input.next();
BigDecimal a1,a2,a3,aa1,aa2;
if('n'==str1.charAt(str1.length()-2))
{
aa1=nm;
str1=str1.substring(0, str1.length()-2);
}
else if('u'==str1.charAt(str1.length()-2))
{
aa1=um;
str1=str1.substring(0, str1.length()-2);
}
else if('m'==str1.charAt(str1.length()-2))
{
aa1=um;
str1=str1.substring(0, str1.length()-2);
}
else if('c'==str1.charAt(str1.length()-2))
{
aa1=um;
str1=str1.substring(0, str1.length()-2);
}
else if('d'==str1.charAt(str1.length()-2))
{
aa1=um;
str1=str1.substring(0, str1.length()-2);
}
else
{
aa1=new BigDecimal("1");
str1=str1.substring(0, str1.length()-1);
}

if('n'==str2.charAt(str2.length()-2))
{
aa2=nm;
str2=str2.substring(0, str2.length()-2);
}
else if('u'==str2.charAt(str2.length()-2))
{
aa2=um;
str2=str2.substring(0, str2.length()-2);
}
else if('m'==str2.charAt(str2.length()-2))
{
aa2=um;
str2=str2.substring(0, str2.length()-2);
}
else if('c'==str2.charAt(str2.length()-2))
{
aa2=um;
str2=str2.substring(0, str2.length()-2);
}
else if('d'==str2.charAt(str2.length()-2))
{
aa2=um;
str2=str2.substring(0, str2.length()-2);
}
else
{
aa2=new BigDecimal("1");
str2=str2.substring(0, str2.length()-1);
}

str3=str3.substring(0,  str3.length()-2);
a1=new BigDecimal(str1);
a2=new BigDecimal(str2);
a3=new BigDecimal(str3);
a1=a1.multiply(aa1);
a2=a2.multiply(aa2);
//System.out.println(a1+"   "+a2+"   "+a3+"   ");

BigDecimal ans=new BigDecimal("0");
ans=ans.add(a3);
ans=ans.multiply(a1);

//  System.out.println(ans+"   "+a2);
ans=ans.divide(a2,2);
ans=ans.setScale(2, BigDecimal.ROUND_HALF_UP);
tag++;
System.out.println("Case "+tag+": "+ans+"px");
}
}
}```