HDU 水题十道,慢慢品味
来源:互联网 发布:星际战甲漂亮捏脸数据 编辑:程序博客网 时间:2024/05/16 09:12
转载自:提高鸟语能力~~
1 hdu 1032
[cpp] view plain copy print?
- #include <iostream>
- using namespace std;
- int len(int n)
- {
- int s = 1;
- while (n!=1)
- {
- if (n&1) n = 3*n +1;
- else n /= 2;
- s++;
- }
- return s;
- }
- int main()
- {
- int i, j, n, l, m;
- while (~scanf("%d %d", &i, &j))
- {
- printf("%d %d", i, j);
- if (i>j) swap(i, j);
- m = 0;
- for (;i<=j;++i)
- {
- l = len(i);
- if (m<l) m = l;
- }
- printf(" %d\n", m);
- }
- return 0;
- }
2 hdu 1029 (鸽巢原理)
[cpp] view plain copy print?
- #include <iostream>
- using namespace std;
- int main()
- {
- int ans, n, c, num;
- while (~scanf("%d", &n))
- {
- c = 0;
- for (int i=1;i<=n;++i)
- {
- scanf("%d", &ans);
- if (c==0)
- {
- num = ans;
- c ++;
- }
- else if (ans == num) c ++;
- else c --;
- }
- printf("%d\n", num);
- }
- return 0;
- }
3 hdu 1033 题目看到蛋碎
[cpp] view plain copy print?
- #include <iostream>
- using namespace std;
- int f[4][2] = {0,10,10,0,0,-10,-10,0};
- void move(int &x, int &y, char c, int &s)
- {
- int u;
- switch (s)
- {
- case 0: if (c=='V') u = 0, s = 1; else u = 2, s = 3; break;
- case 1: if (c=='V') u = 3, s = 2; else u = 1, s = 0; break;
- case 2: if (c=='V') u = 2, s = 3; else u = 0, s = 1; break;
- case 3: if (c=='V') u = 1, s = 0; else u = 3, s = 2; break;
- }
- x += f[u][0];
- y += f[u][1];
- }
- int main()
- {
- char c[300];
- int i, k;
- while (~scanf("%s", c))
- {
- k = strlen(c);
- printf("300 420 moveto\n310 420 lineto\n");
- int x = 310, y = 420, s = 0;
- for (i=0;i<k;++i)
- {
- move(x, y, c[i], s);
- printf("%d %d lineto\n", x, y);
- }
- printf("stroke\nshowpage\n");
- }
- return 0;
- }
4 hdu 1036 sscanf的用法
[cpp] view plain copy print?
- #include <iostream>
- using namespace std;
- int main()
- {
- int f, n, i, a, sum, h, m, s;
- double d;
- char c[20], t[100];
- scanf("%d%lf", &n, &d);
- while (~scanf("%d", &a))
- {
- sum = f = 0;
- for (i=1;i<=n;++i)
- {
- scanf("%s", c);
- if (c[0] == '-') f = 1;
- sscanf(c, "%d:%d:%d", &h, &m, &s);
- sum += h*3600 + m*60 + s;
- }
- if (f) printf("%3d: -\n", a);
- else
- {
- sum = int(sum/d + 0.5);
- printf("%3d: %d:%2.2d min/km\n", a, sum/60, sum%60);
- }
- }
- return 0;
- }
5 hdu 1037 不解释
[cpp] view plain copy print?
- #include <iostream>
- using namespace std;
- int main()
- {
- int h1, h2, h3;
- while (~scanf("%d %d %d", &h1, &h2, &h3))
- {
- if (h1>=168 && h2>=168 && h3>=168)
- printf("NO CRASH\n");
- else
- {
- printf("CRASH ");
- if (h1<168)
- {
- printf("%d\n",h1);
- break;
- }
- if (h2<168)
- {
- printf("%d\n",h2);
- break;
- }
- if (h3<168)
- {
- printf("%d\n",h3);
- break;
- }
- }
- }
- return 0;
- }
6 hdu 1038
[cpp] view plain copy print?
- #include <stdio.h>
- #define P 3.1415926
- int main()
- {
- double diameter, revolutions, time;
- double sum, zong;
- int n = 0;
- while(~scanf("%lf%lf%lf",&diameter,&revolutions,&time))
- {
- if (revolutions==0) break;
- n++;
- sum = 0;
- zong = 0;
- sum = diameter / 12 / 5280 * P * revolutions * time;
- zong = sum/time;
- sum = zong / time * 60 * 60;
- printf("Trip #%d: %.2lf %.2lf\n",n,zong,sum);
- }
- return 0;
- }
7 hdu 1039
[cpp] view plain copy print?
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- #define MAX_LEN 1111
- char psd[MAX_LEN];
- const char end[] = "end";
- const char s1[] = "aeiou";
- int c1(void)
- {
- int i,j;
- for(i=0;psd[i]!='\0';i++)
- for(j=0;s1[j]!='\0';j++)
- if(psd[i]==s1[j])
- return 1;
- return 0;
- }
- int c2(void)
- {
- int i,j,cnt1,cnt2,tag;
- cnt1=cnt2=0;
- for(i=0;psd[i]!='\0';i++)
- {
- for(j=0,tag=0;s1[j]!='\0';j++)
- if(psd[i]==s1[j])
- {
- cnt1++;
- cnt2=0;
- tag=1;
- break;
- }
- if(tag==0)
- {
- cnt1=0;
- cnt2++;
- }
- if(cnt1>=3 || cnt2>=3)
- return 0;
- }
- return 1;
- }
- int c3(void)
- {
- int i;
- for(i=1;psd[i]!='\0';i++)
- if(psd[i]==psd[i-1])
- if(psd[i]!='e' && psd[i]!='o')
- return 0;
- return 1;
- }
- int main(void)
- {
- #ifndef ONLINE_JUDGE
- assert(freopen("1039.in","r",stdin));
- #endif
- while(scanf("%s",psd),strcmp(psd,end))
- {
- if(c1() && c2() && c3())
- printf("<%s> is acceptable.\n",psd);
- else
- printf("<%s> is not acceptable.\n",psd);
- }
- return 0;
- }
8 hdu 1047
大正整数加。
脑抽用string。。。越写越丑。。。还好一遍a了,避免了重敲的宿命。。
[cpp] view plain copy print?
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
- #define clr(x, k) memset((x), (k), sizeof(x))
- const int N = 1000;
- using namespace std;
- //char a[N], x[N];
- string x, a;
- int l;
- void re(string &x)
- {
- int i = 0;
- int j = x.length() -1;
- while (i<j)
- swap(x[i++], x[j--]);
- }
- void add(string &a, string &x)
- {
- int i, j, ma, mi;
- ma = a.length();
- mi = x.length();
- if (ma<mi)
- {
- swap(ma, mi);
- swap(a, x);
- }
- for (i=0;i<mi;++i) a[i] += x[i]-'0';
- for (i=0;i<ma;++i)
- if (a[i]>'9')
- {
- if (i+1<ma) a[i+1] += (a[i]-'0')/10;
- else a.insert(i+1,1,(a[i]-'0')/10+'0');
- a[i] -= 10;
- }
- }
- int main()
- {
- int n;
- scanf("%d", &n);
- while (n--)
- {
- l = 1;
- a = "0";
- while (cin>>x)
- {
- re(x);
- if (x == "0")
- {
- re(a);
- cout<<a<<endl;
- if (n!=0) cout<<endl;
- break;
- }
- add(a, x);
- }
- }
- return 0;
- }
9 hdu 1856 ans初值为1,wa了几次才找到。。。
[cpp] view plain copy print?
- #include <iostream>
- using namespace std;
- const int N = 10000002;
- int n, m;
- int f[N], r[N];
- int find(int x)
- {
- if (f[x]!=x) f[x] = find(f[x]);
- return f[x];
- }
- int main()
- {
- int x, y, i, ans;
- while (scanf("%d", &n)!=EOF)
- {
- for (i=0;i<=N;++i)
- {
- f[i] = i;
- r[i] = 1;
- }
- ans = 1;
- for (i=0;i<n;++i)
- {
- scanf("%d %d", &x, &y);
- x = find(x);
- y = find(y);
- if (x>y) swap(x, y);
- if (x!=y)
- {
- f[y] = x;
- r[x] += r[y];
- if (r[x]>ans) ans = r[x];
- }
- }
- printf("%d\n", ans);
- }
- return 0;
- }
10 hdu 1060
题目大意是输入N,求N^N的最高位数字。1<=N<=1,000,000,000
N^N = a*10^x;
我们要求的最右边的数字就是(int)a,即a的整数部分
两边同时取以10为底的对数 lg(N^N) = lg(a*10^x) ;
N*lg(N) = lg(a) + x;
N*lg(N) - x = lg(a)
a = 10^(N*lg(N) - x);
现在就只有x是未知的了,如果能用n来表示x的话,这题就解出来了。
又因为,x是N^N的位数-1。比如 N^N = 1200 ==> x = 3;
实际上就是 x 就是lg(N^N) 向下取整数,表示为[lg(N^N)]
a = 10^(N*lg(N) – [lg(N^N)]);
然后(int)a 就是答案了。
[cpp] view plain copy print?
- #include<iostream>
- #include<cstring>
- #include<cmath>
- using namespace std;
- int main(){
- int t;
- __int64 ans,n;
- double m;
- scanf("%d",&t);
- while(t--){
- scanf("%I64d",&n);
- m=n*log10(n+0.0);
- m-=(__int64)m;
- ans=pow((double)10,m);
- printf("%I64d\n",ans);
- }
- return 0;
- }
11 hdu 1061 N^N%10
[cpp] view plain copy print?
- #include <cstdio>
- #include <cstdlib>
- #define I64 __int64
- int Fuction(I64 n)
- {
- int res = 1;
- I64 b = n;
- if(!n) // n==0, 输出1
- return 1;
- if(!(n % 10))
- return 0;
- while(b)
- {
- if(b & 1)
- {
- res *= n;
- res %= 10; // 要取模,否则溢出
- }
- n *= n;
- n %= 10; // 要取模,否则溢出
- b >>= 1;
- }
- return res % 10;
- }
- int main()
- {
- int t;
- I64 n;
- scanf("%d", &t);
- while(t--)
- {
- scanf("%I64d", &n);
- printf("%d\n", Fuction(n));
- }
- return 0;
- }
- //题目分析:求n^n的个位数,只要根据每一个数的幂的周期性规律,就行了
- #include <stdio.h>
- int main()
- {
- int m,n,a;
- int s[10][4]={{0},{1},{6,2,4,8},{1,3,9,7},{6,4},{5},{6},
- {1,7,9,3},{6,8,4,2},{1,9}};
- scanf("%d",&m);
- while(m--)
- {
- scanf("%d",&n);
- a=n % 10;
- if(a==0||a==1||a==5||a==6)
- printf("%d\n",a);
- else if(a==4||a==9)
- printf("%d\n",s[a][n%2]);
- else if(a==2||a==3||a==7||a==8)
- printf("%d\n",s[a][n%4]);
- }
- return 0;
- }
0 0
- HDU 水题十道,慢慢品味
- go语言 记录奇怪的写法--慢慢品味
- 品味
- 品味
- 慢慢
- 慢慢
- 慢慢
- 品味爱情
- 品味孤独
- 品味人生
- 品味等待
- 品味人生
- 品味人生
- 品味书屋
- 品味中
- 品味回忆
- 品味人生!
- 品味女人
- 复习与学习
- DOS命令大全
- MyBatis源码浅析
- Xtrabackup 2.2.12 线上使用过程中遇到的 FTWRL 问题
- hdoj-【2588 GCD】
- HDU 水题十道,慢慢品味
- Collection接口/List接口/Set接口知识点详解
- android核心基础day05
- window10安装MongoDB
- 关于XML文档的xmlns、xmlns:xsi和xsi:schemaLocation
- 快速幂的研究
- 如何阅读项目源代码
- 判断一个字符串的ip是否是IP合法的ip地址
- Android 新安全机制之动态权限申请