
ACM
果冻奶酪
一个小小的菜鸡,往后还有很长的路要走,望一起共勉
展开
-
快慢指针保姆级解析
快慢指针这个思想常用于寻求链表中的中间节点,或者说是判断链表中是否有环。首先讲一下如何寻找链表中的中间节点,先分别设两个指针,快:fast和慢:slow两个指针,其中fast指针每次移动数都比slow多走一步,当fast指针走到链表末尾时,slow就刚好走到链表的中间。给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入...原创 2020-03-23 08:54:41 · 149 阅读 · 0 评论 -
每日一练,多数元素(摩尔投票法)
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2这道题的思路我想到的有两种,一种是先将这个数组进行排序,在选出其中符合条件的数字。第二种就是今天刚知晓的摩尔投票法:...原创 2020-03-13 10:29:17 · 149 阅读 · 0 评论 -
每日一练,字符串的最大公因子(辗转相除法)
对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABAB"输出:"A...原创 2020-03-12 09:40:51 · 221 阅读 · 0 评论 -
每日一练,将数组分成和相等的三个部分
给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length - 1]) 就可以将数组三等分。示例1:输出...原创 2020-03-11 14:02:46 · 276 阅读 · 0 评论 -
杭电ACM2123题
#include<stdio.h>int main(){ int i,j,c,n; scanf("%d",&c); while(c--) { scanf("%d",&n); if(n==1) { printf("1\n"); } else { ...原创 2018-09-29 16:20:40 · 316 阅读 · 0 评论 -
杭电ACM2113题
#include<stdio.h>int main(){ int k=1; int n,m,sum; while(scanf("%d",&n)!=EOF) { sum=0; while(n!=0) { m=n%10; n=n/10; if(m%2==0) { sum=sum+m; } } if(k...原创 2018-09-29 16:18:28 · 241 阅读 · 0 评论 -
杭电ACM2092题
#include<stdio.h>#include<math.h>int main(){ int m,n,i,a,b; while(scanf("%d %d",&m,&n)==2&&(m||n)) { a=(int)((m-sqrt(m*m-4*n))/2.0); b=(int)...原创 2018-09-29 16:16:30 · 368 阅读 · 0 评论 -
杭电ACM2081题
#include&lt;stdio.h&gt;int main(){ int t,i; char a[13],b[7]; scanf("%d",&amp;t); while(t--) { scanf("%s",a); b[0]='6'; for(i=1;i&原创 2018-09-29 16:13:55 · 389 阅读 · 0 评论 -
杭电ACM2052题
#include<stdio.h>int main(){ int a,b,i; while(scanf("%d %d",&a,&b)!=EOF) { printf("+"); for(i=1;i<=a;i++) { printf("-"); } printf("+"); printf("原创 2018-09-28 16:28:50 · 440 阅读 · 0 评论 -
杭电ACM2048题
#include<stdio.h>int main (){ long long s[21], sum; int i, n, m; scanf("%d",&n); while (n--) { scanf("%d",&m); s[0] = 0; s[1] = 0; ...原创 2018-09-28 16:27:28 · 621 阅读 · 0 评论 -
杭电ACM2047题
#include<stdio.h>int main(){ __int64 a[40]; int n; while(scanf("%d",&n)!=EOF) { a[1]=3; a[2]=8; for(int i=3;i<=n;i++) { a[i]...原创 2018-09-28 16:26:04 · 607 阅读 · 0 评论 -
杭电ACM2046题
#include<stdio.h>int main(){ int i,n; _int64 s[100]; while(scanf("%d",&n)!=EOF) { s[1]=1; s[2]=2; for(i=3;i<100;i++) { s[i]=s[i-1...原创 2018-09-28 16:24:57 · 536 阅读 · 1 评论 -
杭电ACM2045题
#include<stdio.h>int main(){ int n; while(scanf("%d",&n)!=EOF) { __int64 a[51]; int i; a[1]=3; a[2]=6; a[3]=6; for(i=4;i<=50;i++) { a[i]=a[i-1]+a[i-2]*2; } prin...原创 2018-09-28 16:22:57 · 458 阅读 · 0 评论 -
杭电ACM2032题
#include <stdio.h>int main() { int s=1,n; int i,j; while(scanf("%d",&n)!=EOF) { printf("1\n"); for(i=2;i<=n;s=1,i++) { printf("1 "); ...原创 2018-09-28 16:20:33 · 674 阅读 · 0 评论 -
杭电ACM2030题
#include<stdio.h>int main(){ int n,i,l,c; char a[10000]; scanf("%d\n",&n); while(n--) { c=0; gets(a); l=strlen(a); for(i=0;i<l;i++) { if(a[i]<=127&&a...原创 2018-09-28 16:19:11 · 699 阅读 · 0 评论 -
杭电ACM2026题
#include <stdio.h>int main(){ char s[100]; int i; while (gets(s)) { for (i=0;i<strlen(s);i++) { if (i==0) { s[i]-=32...原创 2018-09-28 16:17:06 · 912 阅读 · 0 评论 -
杭电ACM2022题
#include<stdio.h>#include<math.h>int main(){ int n,m; while(~scanf("%d %d",&m,&n)) { int i,j,max=0; int a,b,c,d; for(i=1;i<=m;i++) ...原创 2018-09-28 16:15:36 · 588 阅读 · 1 评论 -
杭电ACM2021题
#include&lt;stdio.h&gt;int main(){ int n,i,temp,sum; while(scanf("%d",&amp;n)!=EOF) { if(n==0) { break; } sum=0; for(i=0;i&lt;n;i++) { scanf("%d",&原创 2018-09-28 16:14:19 · 1098 阅读 · 0 评论 -
杭电ACM2018题
#include<stdio.h>int main(){ int n,i,a[55]; while(scanf("%d",&n)!=EOF) { if(n==0) break; a[1]=1; a[2]=2; a[3]=3; a[4]=4; ...原创 2018-09-27 15:49:00 · 2357 阅读 · 2 评论 -
杭电ACM2017题
#include<stdio.h>#include<string.h>char s[100];int main(){ int n,i,t,len; while(~scanf("%d",&n)) { getchar(); while(n--) { gets(s); ...原创 2018-09-27 15:47:49 · 3131 阅读 · 3 评论 -
杭电ACM2012题
#include&lt;stdio.h&gt;int main(){ int x,y,n,m; while(scanf("%d%d",&amp;x,&amp;y)) { int count=0; if(x==0&amp;&amp;y==0) { break; }原创 2018-09-27 15:45:45 · 1017 阅读 · 3 评论 -
杭电ACM2010题
#include&lt;stdio.h&gt;int main(){ int m,n; int a,b,c; int x; while(scanf("%d %d",&amp;m,&amp;n)!=EOF) { x=0; for(;m&lt;=n;m++) { a=m%10; b=(m%100-a)/10; c=m/100原创 2018-09-27 15:43:22 · 1363 阅读 · 0 评论 -
杭电ACM1994题
#include<stdio.h>int main() { int T; double Y,Q,e,f,g; scanf("%d",&T); while(T--) { scanf("%lf %lf %lf %lf %lf",&Y,&Q,&e,&f,&g); doub...原创 2018-09-27 15:41:44 · 175 阅读 · 0 评论 -
杭电ACM1273题
#include&lt;stdio.h&gt;int main(){ int n,x; while(scanf("%d",&amp;n)!=EOF) { if(n==0) { break; } else { x=(n-1)/2; printf("%d\n",x); } } return 0;}原创 2018-09-27 15:39:17 · 191 阅读 · 0 评论 -
杭电ACM1249题
#include&lt;stdio.h&gt;int main(){ int t,n,x; scanf("%d",&amp;t); while(t--) { scanf("%d",&amp;n); x=2+6*(n*(n+1)/2-n); printf("%d\n",x); } re原创 2018-09-27 15:37:49 · 294 阅读 · 0 评论 -
杭电ACM1229题
#include<stdio.h>int main(){ int a,b,k,i,c,d; while(scanf("%d%d%d",&a,&b,&k)!=EOF) { if(a==0&&b==0) { break; } c=k; d=1; for(i=0;i<c;i++) { d=d*1...原创 2018-09-27 15:36:36 · 263 阅读 · 0 评论 -
杭电ACM1220题
#include<stdio.h>int main(){ int n,x; while(scanf("%d",&n)!=EOF) { x=n*n*n*(n*n*n-1)/2-3*n*n*(n-1); printf("%d\n",x); } return 0;}原创 2018-09-27 15:35:11 · 202 阅读 · 0 评论 -
杭电ACM1210题
#include<stdio.h>int main(){ int n,m,i; while(scanf("%d",&n)!=EOF) { m=1;i=2; while(i!=1) { if(i<=n) { i=2*i; } ...原创 2018-09-27 15:33:25 · 234 阅读 · 0 评论 -
杭电ACM1196题
#include<stdio.h>int main(){ int n; while(scanf("%d",&n)!=EOF && n!=0) { int s=1; while(n%2==0) { s=s*2; n=n/2; } printf("%d\n",s); } return 0;}原创 2018-09-26 15:55:34 · 427 阅读 · 0 评论 -
杭电ACM1170题
这个的话就用一个switch语句或者多用几个if语句也可以。#include<stdio.h>int main(){ int N; int A,B; char C; scanf("%d",&N); while(N--) { getchar(); scanf("%c",&C); ...原创 2018-09-26 15:50:57 · 403 阅读 · 0 评论 -
杭电ACM1108题
这道题没什么好的方法,就是逐个除,除到能被除尽的就停止。#include<stdio.h>int main(){ int a,b,i; while(scanf("%d%d",&a,&b)!=EOF) { for(i=a;;i+=a) { if(i%b==0) { ...原创 2018-09-26 15:27:13 · 714 阅读 · 0 评论 -
杭电ACM1098题
#include <stdio.h>int main() { int k,a,i,flag; while(scanf("%d",&k)!=EOF) { for(i=0; i<66; i++) { if((18+k*i)%65==0) { break; } } if(i<66) { printf(...原创 2018-09-23 15:25:36 · 370 阅读 · 0 评论 -
航电ACM1064题
求12个数的平均值。#include<stdio.h>int main(){ int t=12; double sum,ave,n; while(t--) { scanf("%lf",&n); sum+=n; } ave=sum/12; printf("$%.2lf\n",ave); return 0;}原创 2018-09-23 15:21:35 · 290 阅读 · 0 评论 -
航电ACM1021题
这道题有个规律,前几项分别是1 2 0 2 1 1 0 1 1 2 0 2……很简单。#include<stdio.h>int main(){ int n; while(scanf("%d",&n)!=EOF) { if(n%4==2) { printf("yes\n"); } else { printf("no\n"); }...原创 2018-09-23 15:18:30 · 294 阅读 · 0 评论 -
杭电ACM2075题
这题虽然简单,但是要注意一个细节,被除数不能为零。#include&lt;stdio.h&gt;int main(){ int n,a,b,c; scanf("%d",&amp;n); while(n--) { scanf("%d%d",&amp;a,&amp;b);原创 2018-09-23 15:14:24 · 216 阅读 · 0 评论 -
杭电ACM2398题
很简单的一道题目。#include&lt;stdio.h&gt;int main(){ int x; double a,b,c; while(scanf("%lf %lf %lf",&amp;a,&amp;b,&amp;c)!=EOF) { x=0; while(a&lt;c)原创 2018-09-23 15:14:11 · 92 阅读 · 0 评论 -
杭电ACM2013题
简单的小学递推。。#include&lt;stdio.h&gt;int main(){ int n,i,k; while(scanf("%d",&amp;n)!=EOF) { k=1; for(i=1;i&lt;n;i++) { k=(k+1)*2; }原创 2018-09-23 15:13:52 · 430 阅读 · 0 评论 -
杭电ACM1097题
不明所以。#include&lt;stdio.h&gt;int main(){ _int64 a,b,x; while(scanf("%I64d %I64d",&amp;a,&amp;b)!=EOF) { b%=4; a%=10; x=a; if(b==0) {原创 2018-09-23 15:13:12 · 642 阅读 · 0 评论 -
杭电ACM1012题
这题比较简单,就不详细讲了,大概就是分几类当等于0,1,2,n时分别计算就可以了。#include<stdio.h>#include<math.h>int main(){ double sum=2.5; int i,j; printf("n e\n"); printf("- -----------\n"); for(i=0...原创 2018-09-23 15:11:24 · 420 阅读 · 0 评论 -
杭电ACM1008题
这题只要分类情况就可以解决。#include<stdio.h>int main(){ int n,i,pan,sum; int a[101]; while(scanf("%d",&n)!=EOF) { if(n==0) { break; } for(i=0;i<n;i++) { scanf("%d",&a[i]);...原创 2018-09-23 15:07:39 · 338 阅读 · 0 评论