![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
果冻奶酪
一个小小的菜鸡,往后还有很长的路要走,望一起共勉
展开
-
快慢指针保姆级解析
快慢指针这个思想常用于寻求链表中的中间节点,或者说是判断链表中是否有环。首先讲一下如何寻找链表中的中间节点,先分别设两个指针,快:fast和慢:slow两个指针,其中fast指针每次移动数都比slow多走一步,当fast指针走到链表末尾时,slow就刚好走到链表的中间。给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入...原创 2020-03-23 08:54:41 · 118 阅读 · 0 评论 -
每日一练,多数元素(摩尔投票法)
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2这道题的思路我想到的有两种,一种是先将这个数组进行排序,在选出其中符合条件的数字。第二种就是今天刚知晓的摩尔投票法:...原创 2020-03-13 10:29:17 · 122 阅读 · 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 · 188 阅读 · 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 · 247 阅读 · 0 评论 -
杭电ACM1000题
#include&lt;stdio.h&gt;int main(){int A,B;while(scanf("%d%d",&amp;A,&amp;B)!=EOF){ printf("%d\n",A+B);} return 0;}原创 2018-09-01 10:42:12 · 327 阅读 · 0 评论 -
杭电ACM1001题
#include&lt;stdio.h&gt;int main(){ int n,sum; while(scanf("%d",&amp;n)!=EOF) { if(n%2==0) sum=n/2*(n+1); else sum=(n+1)/2*n; printf("%d\n...原创 2018-09-01 10:43:02 · 1559 阅读 · 2 评论 -
杭电ACM1089题
#include&lt;stdio.h&gt;int main() { int i,j,num; while(scanf("%d %d",&amp;i,&amp;j)!=EOF) printf("%d\n",i+j); return 0;}原创 2018-09-01 10:43:51 · 2556 阅读 · 0 评论 -
杭电ACM1040题
#include&lt;stdio.h&gt;int main(){ int t,n,i,j,x; int a[1000]; scanf("%d",&amp;t); while(t--) { scanf("%d",&amp;n); for(i=0;i&lt;n;i++)原创 2018-09-01 10:44:53 · 1308 阅读 · 1 评论 -
杭电ACM1090题
这道题有一个新的知识点,循环,即:while(c–)。#include<stdio.h>int main(){ int a,b,c; scanf("%d",&c); while(c--) { scanf("%d %d",&a,&b); printf("%d\n",a+b); }...原创 2018-09-02 16:55:17 · 1659 阅读 · 0 评论 -
杭电ACM1091题
这题有一个小坑,就是当A和B都为0时程序要停止,即要输入break这个指令。#include<stdio.h>int main(){ int a,b,sum; while(scanf("%d%d",&a,&b)!=EOF) { if(a==0&&b==0) { ...原创 2018-09-02 16:59:53 · 981 阅读 · 0 评论 -
杭电ACM1093题
这道题就是简单的求和题。#include<stdio.h>int main(){ int n,i,m,sum; scanf("%d",&n); while(n--) { sum=0; scanf("%d",&m); while(m--) { ...原创 2018-09-02 17:02:39 · 819 阅读 · 1 评论 -
杭电ACM 1095题
这道题就只要注意一下每行输出后都要输出一个空格。#include<stdio.h>int main(){ int a,b; while(scanf("%d %d",&a,&b)!=EOF) { printf("%d\n",a+b); printf("\n"); } return 0;}...原创 2018-09-02 17:07:06 · 638 阅读 · 0 评论 -
杭电ACM1096题
这道题也就是前几道求和题的组合版,很基础。#include <stdio.h>int main(){ int sum,a,n,i,b; scanf("%d",&a); while(a--) { if(scanf("%d",&n)!=EOF) { sum=0; ...原创 2018-09-02 17:11:34 · 2764 阅读 · 4 评论 -
杭电ACM1720题
很基础,没什么好说的。(只需注意一点,A和B是用ASCII表的)#include<stdio.h>int main(){ int a,b; while(scanf("%x%x",&a,&b)!=EOF) { printf("%d\n",a+b); } return 0;} ...原创 2018-09-02 17:17:02 · 482 阅读 · 0 评论 -
杭电ACM2000题
基本的排序题,用冒泡法。#include "stdio.h"int main(){ char a[3],t; int i,j; while(scanf("%s",a)!=EOF) { for(i=0;i<3;i++) for(j=i;j<3;j++) if(a[j]<a[i]) ...原创 2018-09-02 17:19:24 · 1242 阅读 · 1 评论 -
杭电ACM2001题
这个就有一个新的注意点了,有关于数学的开方的内容,就要输入一个新的文件名,即#include<stdio.h>#include<math.h>int main(){ double x1,x2,y1,y2,d; while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF) ...原创 2018-09-04 10:27:59 · 1830 阅读 · 1 评论 -
杭电ACM2002题
没什么难度,基本水题。#define PI 3.1415927 #include<stdio.h> int main() { double n; while(scanf("%lf",&n)!=EOF) //用double时,需要用lf { printf("%.3lf\n",n*n*n*PI*4/3); } ...原创 2018-09-04 10:30:58 · 921 阅读 · 0 评论 -
杭电ACM2003题
这只需考虑两种情况,当A大于等于零和A小于零时。#include<stdio.h>int main(){ double a,b; while(scanf("%lf",&a)!=EOF) { if(a<0) { b=-a; printf("%.2lf\n",...原创 2018-09-04 10:34:23 · 409 阅读 · 0 评论 -
杭电ACM2004题
这道题没什么难度,就是有点小烦。#include<stdio.h>int main(){ int t; while(scanf("%d",&t)!=EOF) { if(t>100||t<0) { printf("Score is error!\n"); ...原创 2018-09-04 10:36:42 · 442 阅读 · 0 评论 -
杭电ACM2005题
这道题有点难的,关键是要判断这一年是否是闰年。#include<stdio.h>int main(){ int year,month,day,sum; while(scanf("%d/%d/%d",&year,&month,&day)!=EOF) { sum=0; switch(month) ...原创 2018-09-04 10:39:18 · 691 阅读 · 0 评论 -
杭电ACM2006题
这道题有一个难点,就是要判断输入中的数字是否是奇数。#include<stdio.h>int main(){ int n,i,m,sum; while(scanf("%d",&n)!=EOF) { sum=1; for(i=1;i<=n;i++) { scanf("...原创 2018-09-04 10:42:14 · 877 阅读 · 1 评论 -
杭电ACM2007题
没什么注意事项,就是要按照基本的方法来做。#include<stdio.h>int main(){ int a=0,b=0; int m,n; int t; while(scanf("%d%d",&m,&n)!=EOF) { a=0; b=0; if(m>n) ...原创 2018-09-04 10:48:37 · 1261 阅读 · 0 评论 -
杭电ACM2008题
这道题也只需分开计算各个数的个数即可。#include<stdio.h>int main(){ int n,a,b,c; double x; while(scanf("%d",&n)!=EOF&&n!=0) { a=0; b=0; c=0; whi...原创 2018-09-04 10:53:44 · 696 阅读 · 1 评论 -
杭电ACM2009题
这道题没什么好的方法,就是死算。#include<stdio.h>#include<math.h>int main(){ double sum,b; int m,n,a; sum=0; b=0; while(scanf("%d%d",&n,&m)!=EOF) { b=sqrt(n)...原创 2018-09-04 10:56:29 · 572 阅读 · 0 评论 -
杭电ACM2011题
这个也只能按照题目中的指示来做。#include<stdio.h>int main(void){ int m,n,i; double sum; scanf("%d",&m); while(m--) { scanf("%d",&n); sum=0.0; for(i=1;i&...原创 2018-09-04 10:59:03 · 905 阅读 · 0 评论 -
杭电ACM2013题
简单的小学递推。。#include<stdio.h>int main(){ int n,i,k; while(scanf("%d",&n)!=EOF) { k=1; for(i=1;i<n;i++) { k=(k+1)*2; } ...原创 2018-09-05 16:41:37 · 269 阅读 · 0 评论 -
杭电ACM2014题
这道题还是一道排序题,先排序,再将除了第一和最后的数去掉再求平均数。#include <stdio.h>int main (){ int n,i,j; float a[100],x; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("...原创 2018-09-05 16:45:37 · 1819 阅读 · 0 评论 -
杭电ACM2033题
这道题有一点小烦,不过只要掌握了思路就可以按部就班的写出代码了。#include<stdio.h>int main(){ int x; int ah,am,as,bh,bm,bs,ch,cm,cs; scanf("%d",&x); while(x--) { scanf("%d%d%d%d%d%d",&a...原创 2018-09-05 16:48:11 · 266 阅读 · 0 评论 -
杭电ACM2035题
这道题用了一个%的作用,取余数。#include<stdio.h>int main(){ int a,b,c; while(scanf("%d%d",&a,&b),a!=0||b!=0) { c=1,a=a%1000; while(b--) { c=c*a; ...原创 2018-09-05 16:49:55 · 396 阅读 · 0 评论 -
杭电ACM2039题
这道题用到了一个三角形的基本判断方法,两边之和大于第三边(也可以是两边之差小于第三边)。注意点是要判断三次。#include<stdio.h>int main(){ double a,b,c; int n; scanf("%d",&n); while(n--) { scanf("%lf%lf%lf",&...原创 2018-09-05 16:53:06 · 1315 阅读 · 0 评论 -
杭电ACM2040题
这道题关键是求出每一个约数。#include<stdio.h> int main() { int n; int x,y,t,sum,i; scanf("%d",&n); while(n--) { sum=0; scanf("%d%d",&x,&y); if(x&g...原创 2018-09-05 16:56:11 · 265 阅读 · 0 评论 -
杭电ACM2042题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2042简单的递推题。’#include<stdio.h>int main(){ int n,a,m; scanf("%d",&n); while(n--) { scanf("%d",&a); m=3;...原创 2018-09-05 17:02:57 · 355 阅读 · 0 评论 -
杭电ACM2055题
#include<stdio.h>int main(){ int n,y; char x; scanf("%d",&n); getchar(); while(n--) { scanf("%c %d",&x,&y); if(x>='a'&&x<='z原创 2018-09-05 17:04:54 · 416 阅读 · 0 评论 -
杭电ACM2057题
这道题要考虑到输入的数据比较大所以要用—int64。#include<stdio.h>int main(){ _int64 a,b,c; while(scanf("%I64X %I64X",&a,&b)!=EOF) { c=a+b; if(c>=0) { p...原创 2018-09-05 17:07:12 · 666 阅读 · 0 评论 -
杭电ACM2071题
这道题比较基础,只要取第一个数,然后把后面的数全部和第一个数进行比较即可。#include<stdio.h>int main(){ int t,n,i; double x,a[100]; scanf("%d",&t); getchar(); while(t--) { scanf("%d",&n)...原创 2018-09-05 17:09:14 · 676 阅读 · 0 评论 -
杭电ACM2075题
这题虽然简单,但是要注意一个细节,被除数不能为零。#include<stdio.h>int main(){ int n,a,b,c; scanf("%d",&n); while(n--) { scanf("%d%d",&a,&b); if(b==0) { ...原创 2018-09-06 17:07:44 · 311 阅读 · 0 评论 -
杭电ACM2090题
基本水题#include<stdio.h>int main(){ char c[100]; double a,b; double sum=0; while(scanf("%s%lf%lf",c,&a,&b)!=EOF) { sum=sum+a*b; } printf("%.1lf\n",...原创 2018-09-06 17:10:05 · 597 阅读 · 0 评论 -
杭电ACM2096题
基本水题,没什么好讲的。#include<stdio.h>int main(){ int t,a,b,c; scanf("%d",&t); while(t--) { scanf("%d %d",&a,&b); c=(a%100+b%100)%100; printf("%d...原创 2018-09-06 17:11:51 · 567 阅读 · 0 评论 -
杭电ACM2101题
这道题就是算a+b是否是86的倍数,便只要用%就可以解决问题。#include<stdio.h>int main(){ int a,b; while(scanf("%d %d",&a,&b)!=EOF) { if((a+b)%86==0) { printf("yes\n")...原创 2018-09-06 17:14:13 · 257 阅读 · 0 评论 -
杭电ACM2107题
这道题只是加了一个情景,基本的思路还是没有变的,依旧是求最大的数。#include<stdio.h>int main(){ int n,i,x; int a[100]; while(scanf("%d",&n)!=EOF) { if(n==0) break; else ...原创 2018-09-06 17:16:31 · 240 阅读 · 0 评论