# ACM程序设计-计算简单题

ACM程序设计 ACM程序设计

2/31

3/31

4/31

#include <stdio.h> int main(void) { int i,j,k=0,n,sum,a[100]; for(i=2;i<10000;i+=2) //已知完数为偶数 已知完数为偶数 { sum=1; for(j=2;j<=i/2;j++) { if(i%j==0) sum+=j; } if(sum==i) a[k++]=i; }
5/31

while(scanf("%d",&n)==1) { printf("%d: ",n); for(i=0;i<k;i++) { if(a[i]<=n) printf("%d ",a[i]); } printf("\n"); } return 0; }
6/31

7/31

8/31

9/31

#include <stdio.h> #include <math.h> int isprime(int a) { int i; int s=(int)sqrt((double)a); for(i=2;i<=s;i++) { if(a%i==0) return 0; } return 1; }
10/31

int main(void) { int n; while(scanf("%d",&n)==1) { printf("%s",(n>100&&n<1000 &&n/100==n%10 &&isprime(n)) ?"Yes\n":"No\n"); } return 0; }
11/31

12/31

13/31

14/31

#include <stdio.h> int isprime(int n) { int i; if(n==1) //1不是素数 不是素数 return 0; if(n!=2&&n%2==0)//除开 以外的偶数 除开2以外的偶数 除开 return 0; for(i=3;i*i<=n;i+=2)//恰好跳过 恰好跳过2,3,5,7，它们是素数 恰好跳过 ， { if(n%i==0) return 0; } return 1; }
15/31

int issym(int n) { if(n<12&&n!=10)//1位是对称数，2位素数中只有 是对称的 位是对称数， 位素数中只有 位素数中只有11是对称的 位是对称数 return 1; if(n>100&&n<1000&&n/100==n%10)//3位数中只须个位与 位数中只须个位与 百位相等 return 1; //注意四位数不可能有对称的素数，易得有 因子 注意四位数不可能有对称的素数， 注意四位数不可能有对称的素数 易得有11因子 if(n>10000&&n/1000==n%10*10+n/10%10) return 1; return 0; }

16/31

int main(void) { int n; while(scanf("%d",&n)==1) { printf("%s\n",n<100000&&issym(n) &&isprime(n)?"Yes":"No"); } return 0; }
17/31

An easy problem
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

18/31

Problem Description
When Teddy was a child , he was always thinking about some simple math problems ,such as “What it’s 1 cup of water plus 1 pile of dough ..” , “100 yuan buy 100 pig” .etc.. One day Teddy met a old man in his dream , in that dream the man whose name was“RuLai” gave Teddy a problem : Given an N , can you calculate how many ways to write N as i * j + i + j (0 < i <= j) ? Teddy found the answer when N was less than 10…but if N get bigger , he found it was too difficult for him to solve. Well , you clever ACMers ,could you help little Teddy to solve this problem and let him have a good dream ?
19/31

Input The first line contain a T(T <= 2000) . followed by T lines ,each line contain an integer N (0<=N <= 1010 ). Output For each case, output the number of ways in one line.

20/31

Sample input: 2 1 3 Sample output: 0 1

21/31

22/31

23/31

2. 当N +１非完全平方数，同理可得， １非完全平方数，同理可得， ans = (f[N + 1] – 2) / 2 。 如何快速的求一个数N的约数个数 如何快速的求一个数 的约数个数 我们知道,任何一个自然数 可以表示成其质因数 我们知道 任何一个自然数N可以表示成其质因数 任何一个自然数 的幂的乘积的形式. 的幂的乘积的形式 a1 a2 an 1 2 n

N= p ×p

× ...... × p

24/31

1、简单的筛素数 、

25/31

const int Max = 100000; bool bp[Max + 1]; //记录每个数是否是素数 记录每个数是否是素数 int p[30000]; //记录筛选出来的素数 记录筛选出来的素数 int pCnt=0; //记录当前筛选出来的素数个数 记录当前筛选出来的素数个数 void sievePrime() { int i, j; memset(bp, true, sizeof(bp)); bp[0] = bp[1] = false; for (i = 2; i <= Max; i++) { if (bp[i]) //i是素数 是素数 { p[pCnt++] = i; for (j = i + i; j <= Max; j += i) //依次筛掉 的倍数 依次筛掉i的倍数 依次筛掉 bp[j] = false; } } }

26/31

### ACM程序设计题目

ACM程序设计题目 - ACM 程序设计题目 2006-08-08 15:38 1. 给定一个正整数 n, 则在 n 所有的分解式中, 求因子乘积最大的一个分解及 此乘积. PS: 这...

### ACM程序设计大赛常用算法模板

ACM程序设计大赛常用算法模板_IT/计算机_专业资料。...[lenb-i-1]-'0'; //计算乘数从低位到高位以此...(n,a,b,ch); } //以下是:ZOJ---1372 题的...

### acm程序设计模板(全)

ACM程序设计 4页 1下载券 ACM程序设计 65页 7下载券 ACM程序设计题目 2页 ...(s3,s1,l1,l2,s2); } //计算两直线交点,注意事先判断直线是否共面和平行...

### ACM大学生程序设计大赛

ACM大学生程序设计大赛_工学_高等教育_教育专区。ACM大学生程序设计大赛大学生 ...(简单题),Computational Geometry(计算几何),Number Theory(数论),Combinatorics(...