权限问题
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 507(230 users) Total Accepted: 226(202 users) Rating: Special Judge: No
Description
对于一个文件来说总是会涉及到一些权限问题,这里我们将问题简化一下,认为权限是面向对于所有用户的一个限制。如果用户对这个文件有读的权限,那么将获得一个权限数字4,如果用户对这个文件有写的权限则将获得一个权限数字2,如果有执行权限那么将获得一个权限数字1,用户不具有任何权限那么权限数字为0,一个用户拥有这个文件的权限值是他拥有的所有权限数字的加和。一个文件对于用户的初始权限值为0,现在想要知道经过一些列的操作之后用户对这个文件拥有的权限值是多少。
Input
本题只有一组输入数据,输入处理到文件结束。add代表要加入的权限,后面跟一个指定的字母:a, r, w或者x中的一个字母,del代表删除的权限,后面同样跟着一个指定的字母:a, r, w或者x中的一个字母。a代表所有的权限,r代表读的权限,w代表写的权限,x代表执行的权限。show命令表示要输出用户拥有当前文件的权限值。
Output
对于每次输出,输出对应的权限值并换行
Sample Input
add a
show
del r
del x
show
Sample Output
7
2
Hint
你不能重复计算用户的某个权限
Author
杨和禹
#include<stdio.h>
int main()
{
int x,y,mid;
int n;
while(~scanf("%d",&n))
{
for(int a=6;a<=n;a++)
{
for(int b=2;b<=a;b++)
{
for(int c=b;c<=a;c++)
{
x=a;
y=c;
while(x>=y)
{
mid=(x+y)/2;
if(a*a*a>b*b*b+c*c*c+mid*mid*mid)
y=mid+1;
else if(a*a*a<b*b*b+c*c*c+mid*mid*mid)
{
x=mid-1;
}
else {
printf("%d^3 = %d^3 + %d^3 + %d^3\n",a,b,c,mid);
break;
}
}
}
}
}
}
}