A:我是bfs出一颗树,然后删掉树后面的k个结点。其实也可以直接bfs出一块连通的s - k个点,其余的.打X就可以了。很水的题
#include int gcd(int m, int n) { return m==0?n:gcd(n % m, m); } int main() { int m, n; while(scanf("%d%d",&m,&n)!=EOF) { printf("%d\n", m + n - gcd(m, n)); } return 0; } 题解:考虑切蛋糕为q块需要q刀,p块需要p刀,但是两者切痕有重叠,重叠部分为两者的最大公约数,所以问题就迎刃而解了。
#include long long gcd(long long a,long long b){ if (b==0) return a; return (gcd(b,a%b));}int main(){ int t; long long a,b,c,d; scanf("%d",&t); while (t--) { scanf("%I64d/%I64d%I64d/%I64d",&a,&b,&c,&d); a=a*b*c*d/gcd(a*d,c*b); b=b*d; if(a%b) {c=...
米勒罗宾素数测试:/* if n long long power(long long m,long long n,long long k){ long long b = 1; while (n>0) { if (n&1) b=(b*m)%k; n=n>>1; m=(m*m)%k; } return b;} bool Miller_Rabbin(long long t){ if (t==2) return true; if (power(2,t-1,t)!=1) return false; if (pow...
#include int gcd(int a,int b){ if (b==0) return a; else return gcd(b,a%b);}int main(){ int m,n; while (scanf("%d%d",&m,&n)!=EOF) { printf("%d\n",m*n/gcd(m,n)); } return 0;}
#include #include using namespace std;int main(){ int n; while(scanf("%d",&n)!=EOF) { int a[100000]; for(int i=0; i<n; i++) scanf("%d",&a[i]); sort(a,a+n); printf("%d\n",a[n/2]); } return 0;}
#include #include #include using namespace std;struct cc{ int id; int mark;}a[10000];bool cmp(cc a,cc b) {return (a.mark>b.mark);} int main(){ int m,n; while(scanf("%d",&n)!=EOF) { int i=0; while(scanf("%d%d",&a[i].id,&a[i].mark),a[i].id!=0) i++; int s=i; s...
#include #include using namespace std;int main(){ int n; scanf("%d",&n); while(n--) { int m; int a[100]; scanf("%d",&m); for (int i=0; i<m; i++) scanf("%d",&a[i]); sort(a,a+m); printf("%d\n",a[1]); } return 0; }
#include #include using namespace std;int main(){ int n; while (scanf("%d",&n)!=EOF) { int a[10010]; for (int i=0; i<n; i++) scanf("%d",&a[i]); sort(a,a+n); int begin=0,end=n-2,flag=1; printf("%d",a[n-1]); while (begin<=end) { ...
#include #include #include using namespace std;struct node{ string name,begin,end;}a[1000];int cmp1(node a,node b) { return a.beginb.end;}int main(){ int n,m,i; cin>>n; while(n--) { cin>>m; for(i=0;i>a[i].name>>a[i].begin>>a[i].end; sort(a,a+m,cmp1); cout<<...
#include #include using namespace std;struct arc{ int a; int b;};bool cmp(arc x,arc y){ return (x.a+"); for (int j=3; j\n"); } printf("\n"); } } return 0;} 注意点:在这道题中学会了sort的各种用法,还有结构体的定义,需要注意的是结构体定义完后一定要加上‘;’。
题解:对于这道题,我们采用这样的策略,首先,排序是明显的,然后第一步,若己方最弱的比对方最弱的强,则两者比赛,如果不是,进行第二步,比较己方最强的和敌方最强的,若己方强则两者比赛,否则将己方最弱的与敌方最强的比赛。然后依次做下去,统计结果即为答案。注意点:学习了sort的用法,是从0开始读入数组的,注意algorithm的拼写,最后注意判断是双等号,pas的习惯还是没有改过来……#include #include using namespace std;int main(){ int n; while(scanf("%d",&n),n!=0) { int al,..
#include #include int main(){ int n; scanf("%d",&n); for(int i=1; ib) { int t=a; a=b; b=t; } a=(a+1)/2; b=(b+1)/2; x[a]++; x[b+1]--; } max=0; s=0; for(int j=1; jmax) max=s; ...
#include #include using namespace std;int main(){ int n; scanf("%d",&n); for(int i=1; i<=n; i++) { char c,demo; int a,b; scanf("%c%c%c%d%c%d",&demo,&c,&demo,&a,&demo,&b); if (c=='+') printf("%d\n",a+b); if (c=='-') printf(&
#include #include using namespace std;void swap(int& a,int& b){ int t; t=a; a=b; b=t;}int main(){ int n; scanf("%d",&n); for (int i=1; ic) swap(c,b); if (a>c) swap(a,c); if ((c*c)==(a*a+b*b)) printf("%s\n\n","yes"); else printf("%s\n\n","no
#include #include int main(){ char s[10000]; while(gets(s),s[0]!='#') { int i=0; while (i<strlen(s)) { if (s[i]==' ') printf("%s","%20"); else if (s[i]=='!') printf("%s","%21"); else if (s[i]=='$') printf("%s","
题解:这道题我们直接考虑数字的最后一位即可,又数字的最后一位最多只有10中情况,所以我们只要模拟最后一位相乘的过程,一旦出现循环,就直接输出下标为这个数字对循环节长度取模的结果的内存即可。#include int main(){ int n; scanf("%d",n); while(scanf("%d",&n)!=EOF) { int a[100]; bool go=true; int m=n%10; int x=n%10; a[1]=m; int tot=1; do ...
翻译:assume 假设题解:题目的大意是找到一个只出现奇数次的数字,由于其它的数字成双出现,我们想到了xor的性质,将所有读入的数字xor起来,最后结果就是需要找的数字了。#include int main(){ int n,x,sum; while(scanf("%d",&n),n!=0) { sum=0; for(int i=1; i<=n; i++) { scanf("%d",&x); sum^=x; } printf("%d\n",sum); } ...
#include int main(){ int cnt,h,d,u; while(scanf("%d%d%d",&h,&d,&u)!=EOF) if (h!=0) { cnt=0; cnt+=(2*((h-d)/(d-u))); if ((h-d)%(d-u)!=0) cnt+=2; cnt+=1; printf("%d\n",cnt); } return 0;}翻译:worm 虫子
翻译: hexadecimal number 十六进制数 注意点:字符数组是从0开始的,积累字符转化函数toupper,需要用库string。
我们知道BSD Socket是标准的套接字规范,那么怎么在windows使用他们呢? 我们首先要引用<winsock2.h>和ws2_32.lib 然后,执行WSAStartup #ifdef _WIN32 WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(1
Eclipse和MyEclipse出现错误:java.lang.OutOfMemoryError: Java heap space的错误,很熟悉的错误信息,可咋就想不起来在哪里设JVM的参数啊。请看下面: 1,从Intalled JREs里修改;window->Preferences->Java->...
这个问题主要还是由这个问题java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆栈设置太小的原因。跟据网上的答案大致有这两种解决方法:1、设置环境变量set JAVA_OPTS= -X...
报错的代码:报错原因:多写了一个分号!
1.Hello Word1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Hello World!</title> 5 </head> 6 <body> 7 <p>Hello World!</p> 8 <script
最近从pas转向了C++,觉得需要在语言上总结对比一下,以及记录一些注意点,关于STL,还需要之后好好地学习。同时,希望这篇文章对从pas转C++的同学有所帮助。基本类型 首先是基本类型的比较: Pascal ——> C++ Integer ——> short int Longint ——> int(long int) Dword ——> unsigned int Char ——> char Real ——> float Extended ——> double Boolean ——> bool定义 C++的定义法和Pas略有不同,就从整形的定义来
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号