1777:文件结构“图”

  • 查看
  • 提交
  • 统计
  • 提问

总时间限定: 
1000ms

内存限制: 
65536kB

描述
当处理器达看文件系统的结构通常十分有因此。Microsoft
Windows上面的”explorer”程序就算是这般的一个事例。但是在发出图形界面之前,没有图形化的象征方法的,那时候太好之计是把目录和文件之构造显示成一个”图”的典范,而且以缩排的款型来表示目录的结构。比如:

ROOT
|     dir1
|     file1
|     file2
|     file3
|     dir2
|     dir3
|     file1
file1
file2

其一图说明:ROOT目录包括三单子目录和简单单公文。第一身材目录包含3独文件,第二个子目录是拖欠的,第三单子目录包含一个文本。

输入
若的任务是写一个主次读取一些测试数据。每组测试数据表示一个电脑的文本结构。每组测试数据因’*’结尾,而享有合理的输入数据以’#’结尾。一组测试数据包括一些文件与目录的名(虽然当输入被我们从没为来,但是我们总假设ROOT目录是无与伦比外层的目)。在输入被,以’]’表示一个目录的始末之收。目录名字的第一单假名是’d’,文件名字的率先独字母是’f’。文件称或发生扩大名吧或没有(比如fmyfile.dat和fmyfile)。文件及目录的名字中都未包括空格,长度还非超过30。一个索引下的子目录个数和文书个数的与非跳30。

输出
每当展示一个目中内容的时候,先出示其中的子目录(如果有的话),然后重新显示文件(如果有话)。文件要求按名字的字母表的一一显示(目录不用按名字的字母表顺序显示,只待按目录出现的先后展示)。对各一样组测试数据,我们要事先输出”DATA
SET
x:”,这里x是测试数据的号码(从1开头)。在片组测试数据里要出口一个空行来隔开。

你待小心的凡,我们利用一个’|’和5个空格来表示有缩排的层系。

样例输入
file1
file2
dir3
dir2
file1
file2
]
]
file4
dir1
]
file3

file2
file1

#

样例输出
DATA SET 1:
ROOT
| dir3
| | dir2
| | file1
| | file2
| dir1
file1
file2
file3
file4

DATA SET 2:
ROOT
file1
file2

提示
一个目录及它们的子目录处于不同的层系
一个索引和其的里边的公文处于同一层次

来源
翻译自 Pacific Northwest 1998 的试题

 

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 string a;
 6 int cc;//输出深度
 7 int now=1;//记录当前*数量 
 8 int flag=0;
 9 void work()
10 {
11     string str[50];//储存该目录下的文件 
12     int l=0;
13     while(cin>>a)
14     {
15         if(flag==0&&a[0]!='#')
16         {
17             cout<<"DATA SET "<<now<<":"<<endl;
18             cout<<"ROOT"<<endl;
19             flag=1;
20         }
21         if(a[0]=='#')
22         return;
23         else if(a[0]=='*')
24         {
25             cc=0;
26             sort(str+0,str+l);
27             for(int i=0;i<l;i++)
28             {
29                 cout<<str[i]<<endl;
30             }
31             cout<<endl;
32             now++;
33             //cout<<"DATA SET "<<now<<":"<<endl;
34             //cout<<"ROOT"<<endl;
35             flag=0;
36             work();
37         }
38         else if(a[0]=='d')
39         {
40             //cc++;
41             //str[l]=a;
42             //l++;
43             cc++;
44             for(int i=1;i<=cc;i++)
45             {
46                 cout<<"|";
47                 for(int j=1;j<=5;j++)
48                 cout<<" ";
49             }
50             cout<<a<<endl;
51             work();
52         }
53         else if(a[0]=='f')
54         {
55             
56             str[l]=a;
57             l++;
58             continue;
59         }
60         else if(a[0]==']')
61         {
62             
63             sort(str+0,str+l);
64             for(int i=0;i<l;i++)
65             {    
66                 for(int k=1;k<=cc;k++)
67                 {    
68                     cout<<"|";
69                     for(int j=1;j<=5;j++)
70                     cout<<" ";
71                 }
72                 cout<<str[i]<<endl;
73             }
74             cc--;
75             return;
76         }
77     }
78 }
79 int main()
80 {
81     //freopen("r.txt","r",stdin);
82     //freopen("w.txt","w",stdout);
83     work();
84     return 0;
85 }

 

14:求10000以内n的阶乘

  • 查看
  • 提交
  • 统计
  • 提问

总时间范围: 
5000ms

内存限制: 
655360kB

描述
求10000以内n的阶乘。

输入
一味来一样执行输入统计,整数n(0<=n<=10000)。

输出
一行,即n!的值。

样例输入
100

样例输出
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

来源
JP06

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 int a[1000001]={1};
 7 int ans[10000001]={1};
 8 char n[1001];
 9 int en[1001];
10 int main()
11 {
12     int n;
13     cin>>n;
14     int lans=1;
15     int x=0;
16     for(int i=1;i<=n;i++)
17     {
18         
19         for(int j=0;j<lans;j++)
20         {
21             a[j]=a[j]*i+x;
22             x=a[j]/10;
23             if(x>0&&j==lans-1)
24             lans++;
25             a[j]=a[j]%10;
26         }
27     }
28     int flag=0;
29     for(int i=lans;i>=0;i--)
30     {
31         if(a[i]==0&&flag==0)
32         continue;
33         else flag=1;
34         cout<<a[i];
35     }
36     return 0;
37 }