摘要: 题目链接基本上跟上个题一模一样。居然因为INT64 CE了两次,哭死。。。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <vector> 6 #include <cmath> 7 #include <map> 8 #define ll long long 9 using namespace std;10 ll euler(ll n)11 {12 ll i,m = (l 阅读全文
posted @ 2012-09-07 21:42 Naix_x 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题目链接前传:本来之前在高中的一个OJ上看见的,SDOI上的一个题,看着很“数论”,想了想,没想法。。。看了看DISCUSS,说是POJ上的原题,然后看了一下DISCUSS说是欧拉函数,不会。。。然后就放下,最近遇见了很多这样类似的问题,所以先把这个裸题给过了。。。查了一下,有结论。。。∑gcd(i, n) = sum(i*euler(n/i));为啥会这样呢?我自己手算了一下10的情况,规律还是挺明显的,1-n中可以整除i的个数是n/i,这些数与n的最大公约数为i的时候,不就相当于这些都数除以i,然后寻找互质的数,所以i*euler(n/i)就是1-n中公约数是i的总和。欧拉函数用的是模版, 阅读全文
posted @ 2012-09-07 21:33 Naix_x 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题目链接水DP。 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define INF -2139062144 5 int p[25][25],dp[26][26]; 6 int max(int a,int b) 7 { 8 return a > b? a:b; 9 }10 int main()11 {12 int i,j,k,n;13 scanf("%d",&n);14 for(i = 1;i <= n;i ++)15 {16 f 阅读全文
posted @ 2012-09-07 15:26 Naix_x 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目链接题目还是挺裸的Polya的,但是有一个置换推错了。。。。悲剧啊,一直WA,Java也不熟悉,看着czyuan的文章快速入门。。。180度的时候想错了,其实是c^(n*n+1)/2种,想成和从中间翻一样呢。哎,java写的太搓了。。。开始的时候都没看见翻转。。。 1 import java.io.*; 2 import java.math.*; 3 import java.text.*; 4 import java.util.*; 5 public class Main 6 { 7 public static void main(String[] args) 8 { ... 阅读全文
posted @ 2012-09-07 14:58 Naix_x 阅读(395) 评论(0) 推荐(0) 编辑