A. Theatre Square
题意:需要多少边长为a的正方形覆盖n*m的面积区域。
很容易想出,一片一片的覆盖即可,只能多不能少,注意上取整。
#include<bits/stdc++.h>
using namespace std;
int main()
{
double n, m, a;
cin >> n >> m >> a;
cout << setprecision(19) << ceil(n/a)*ceil(m/a);
return 0;
}
B - Spreadsheet
题意:两种表示行列的形式的转换。一种是R23C55表示R后面是row,C后面是column,一种是BC23前面是column且使用26进制表示,后面是row。
首先判断是哪一种形式,然后把用到的数字或者字母分离并且取出来,进行简单(fuza)的换算,最后再使用一定的格式输出。
#include<bits/stdc++.h>
using namespace std;
void ccc(int n)
{
if(n>26)
ccc((n-1)/26);
printf("%c",(n-1)%26+'A');
}
int main()
{
int t;
cin >> t;
while(t--)
{
char a[1000010];
cin >> a;
int c=0,r=0;
bool f=0;
if(a[0]=='R'&&isdigit(a[1]))
{
for(int k=2;k<strlen(a);k++)
if(a[k]=='C')
f=1;
}
if(f)
{
int i=1;
while(a[i]!='C')
{
r = r*10+a[i]-'0';
i++;
}
i++;
while(i<strlen(a))
{
c = c*10+a[i]-'0';
i++;
}
ccc(c);
cout <<r<< endl;
}
else
{
int i=0;
while(a[i]>='A'&&a[i]<='Z')
{
c = c*26+(a[i]-'A'+1);
i++;
}
while(i<strlen(a))
{
r = r*10+(a[i]-'0');
i++;
}
printf("R%dC%d\n",r,c);
}
}
return 0;
}