首页 > 其他 > 详细

2019/10/13

时间:2019-10-23 16:02:17      阅读:76      评论:0      收藏:0      [点我收藏+]

水题虽不好,但是很爽

渴望未来某天能把剩下的题补了,先做个记录。

 

Hard Disk Drive

http://acm.hdu.edu.cn/showproblem.php?pid=4788

单位转化,转一级就转了1000/1024,用pow就ok,答案要百分比就再转化一下。

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int t;scanf("%d",&t);
 6     for(int kk=1;kk<=t;kk++)
 7     {
 8         int n;
 9         char lev[5];
10         scanf("%d%s",&n,lev);
11         printf("Case #%d: ",kk);
12         double ans=1000/1024.0;
13         if(lev[1]==B) ans=0;
14         else if(lev[1]==K) ans=100-ans*100;
15         else if(lev[1]==M) ans=100-pow(ans,2)*100;
16         else if(lev[1]==G) ans=100-pow(ans,3)*100;
17         else if(lev[1]==T) ans=100-pow(ans,4)*100;
18         else if(lev[1]==P) ans=100-pow(ans,5)*100;
19         else if(lev[1]==E) ans=100-pow(ans,6)*100;
20         else if(lev[1]==Z) ans=100-pow(ans,7)*100;
21         else if(lev[1]==Y) ans=100-pow(ans,8)*100;
22         printf("%.2f%%\n",ans);
23     }
24 }
View Code

 

Just random

http://acm.hdu.edu.cn/showproblem.php?pid=4790

首先知道a+c是最小的b+d是最大的,所以满足条件的且在此区间内的数是有限的,只要求这些满足条件的数的总个数就可以。做矩阵第一行从a+c到a+d,第一列a+c到b+c;最后一行b+c到b+d,最后一列a+d到b+d,以同一列为同一大小数字来稍微偏一下这个矩阵。大概是左三角中矩形右三角的状态。

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll __gcd(ll a,ll b)
 5 {
 6     return b==0?a:__gcd(b,a%b);
 7 }
 8 int main()
 9 {
10     int t;scanf("%d",&t);
11     for(int kk=1;kk<=t;kk++)
12     {
13         ll a,b,c,d,p,m;scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&p,&m);
14         ll ans=0,posi=(b-a+1)*(d-c+1);
15         if((b-a)>(d-c)) swap(a,c),swap(b,d);
16         ll t1,t2,add1,add2,cnt1,cnt2;
17         t1=(a+c)%p;
18         add1=(m-t1+p)%p;
19         cnt1=(a+c+add1-m)/p;
20         t2=(b+c-1)%p;
21         add2=(t2-m+p)%p;
22         cnt2=(b+c-1-add2-m)/p;
23         ans+=(cnt2-cnt1+1)*(1+add1)+(cnt2-cnt1+1)*(cnt2-cnt1)/2*p;
24 
25         t1=(b+c)%p;
26         add1=(m-t1+p)%p;
27         cnt1=(b+c+add1-m)/p;
28         t2=(a+d)%p;
29         add2=(t2-m+p)%p;
30         cnt2=(a+d-add2-m)/p;
31         ans+=(cnt2-cnt1+1)*(b-a+1);
32 
33         t1=(a+d+1)%p;
34         add1=(m-t1+p)%p;
35         cnt1=(a+d+1+add1-m)/p;
36         t2=(b+d)%p;
37         add2=(t2-m+p)%p;
38         cnt2=(b+d-add2-m)/p;
39         ans+=(cnt2-cnt1+1)*(1+add2)+(cnt2-cnt1+1)*(cnt2-cnt1)/2*p;
40 
41         ll gc=__gcd(ans,posi);
42         printf("Case #%d: %lld/%lld\n",kk,ans/gc,posi/gc);
43     }
44 }
View Code

 

Zhuge Liang‘s Password

http://acm.hdu.edu.cn/showproblem.php?pid=4772

失去理智就是莽啊,一度脑子转不过来!然后就写下了下面这个答案。找到理智了,自己脑补写的转三遍不如人家写的转一遍。

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define N 100005
 4 inline int read(){
 5     int s=0,w=1;
 6     char ch=getchar();
 7     while(ch<0||ch>9){if(ch==-)w=-1;ch=getchar();}
 8     while(ch>=0&&ch<=9){s=s*10+ch-0;ch=getchar();}
 9     return s*w;
10 }
11 int ma1[35][35],ma2[35][35];
12 int main()
13 {
14     int n;
15     while(scanf("%d",&n),n)
16     {
17         int maxn=0,ans=0;
18         for(int i=1;i<=n;i++)
19             for(int j=1;j<=n;j++)
20                 ma1[i][j]=read();
21         for(int i=1;i<=n;i++)
22             for(int j=1;j<=n;j++)
23             {
24                 scanf("%d",&ma2[i][j]);
25                 if(ma2[i][j]==ma1[i][j]) ans++;
26             }
27         maxn=max(maxn,ans);
28         ans=0;
29         for(int i=1;i<=n;i++)
30             for(int j=1;j<=n;j++)
31                 if(ma1[i][j]==ma2[j][n-i+1]) ans++;
32         maxn=max(maxn,ans);
33         ans=0;
34         for(int i=1;i<=n;i++)
35             for(int j=1;j<=n;j++)
36                 if(ma1[i][j]==ma2[n-i+1][n-j+1]) ans++;
37         maxn=max(maxn,ans);
38         ans=0;
39         for(int i=1;i<=n;i++)
40             for(int j=1;j<=n;j++)
41                 if(ma2[i][j]==ma1[j][n-i+1]) ans++;
42         maxn=max(maxn,ans);
43         printf("%d\n",maxn);
44     }
45 }
View Code
void turn()
{
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            temp[i][j]=ma2[j][n-i+1];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            ma2[i][j]=temp[i][j];
}

 

Hard code

http://acm.hdu.edu.cn/showproblem.php?pid=4813

技术分享图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 inline int read(){
 5     int s=0,w=1;
 6     char ch=getchar();
 7     while(ch<0||ch>9){if(ch==-)w=-1;ch=getchar();}
 8     while(ch>=0&&ch<=9){s=s*10+ch-0;ch=getchar();}
 9     return s*w;
10 }
11 char str[1005];
12 int main()
13 {
14     int t;scanf("%d",&t);
15     while(t--)
16     {
17         int n,m;scanf("%d%d",&n,&m);
18         scanf("%s",str);
19         int len=n*m,k=0;
20         for(int i=0;i<n;i++)
21         {
22             for(int j=0;j<m;j++)
23                 printf("%c",str[k++]);
24             printf("\n");
25         }
26     }
27 }
View Code

2019/10/13

原文:https://www.cnblogs.com/Aaaamber/p/11726097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!