码迷,mamicode.com
首页 > 其他好文 > 详细

SGU 乱搞日志

时间:2015-02-05 23:19:36      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:

SGU 100 A+B :太神不会

SGU 101 Domino:

题目大意:有N张骨牌,两张骨牌有两面有0到6的数字,能相连当且仅当前后数字相同,问能否有将N张骨牌连接的方案?思路:裸的欧拉回路,注意自环,连通

技术分享
 1 //sgu101
 2 #include<iostream>
 3 #include<cstdio>
 4 #include <math.h>
 5 #include<algorithm>
 6 #include<string.h>
 7 #include<queue>
 8 #define MOD 1000003
 9 #define maxn 2009
10 using namespace std;
11 int head[maxn],ans[maxn],top,now=1,next[maxn],point[maxn];
12 int degree[maxn],sum=0;
13 bool visit[maxn],ss[maxn],sign[maxn];
14 void add(int x,int y,bool si){
15         next[++now]=head[x];head[x]=now;
16         point[now]=y;ss[now]=si;
17 }
18 void dfs(int s){
19         for(int i=head[s];i;i=next[i])if(!visit[i>>1]){
20                 sum++;
21                 int u=point[i];visit[i>>1]=1;dfs(u);
22                 ans[++top]=i>>1;sign[top]=ss[i];
23         }
24 }
25 int main()
26 {
27         int n,x,y,cnt=0,s=0;
28         scanf("%d",&n);
29         for(int i=1;i<=n;i++){
30                 scanf("%d%d",&x,&y);add(x,y,1);add(y,x,0);
31                 degree[x]++;degree[y]++;s=x;
32         }
33         for(int i=0;i<=6;i++)if(degree[i]&1)cnt++,s=i;dfs(s);
34         if(sum!=n ||cnt>2){printf("No solution\n");return 0;}
35         for(int i=top;i>=1;i--){
36                 printf("%d ",ans[i]);
37                 if(sign[i]==1)printf("+\n");else printf("-\n");
38         }
39         return 0;
40 }
View Code

 SGU 102 Coprimes:

题目大意:求小于n与n互质的数的个数 思路:欧拉函数哪家强

技术分享
 1 //sgu101
 2 #include<iostream>
 3 #include<cstdio>
 4 #include <math.h>
 5 #include<algorithm>
 6 #include<string.h>
 7 #include<queue>
 8 #define MOD 1000003
 9 #define maxn 2009
10 using namespace std;
11 int phi(int n)
12 {
13         int ret=n;
14         for(int i=2;i*i<=n;i++)
15         {
16                 if(n%i==0)ret=(ret/i)*(i-1);
17                 while(n%i==0)n/=i;
18         }
19         if(n>1)ret=ret/n*(n-1);
20         return ret;
21 }
22 int main()
23 {
24         int n;
25         scanf("%d",&n);
26         printf("%d\n",phi(n));
27         return 0;
28 }
View Code

 

SGU 乱搞日志

标签:

原文地址:http://www.cnblogs.com/philippica/p/4275871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!