A:给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数
代码:
#include <bits/stdc++.h>
using namespace std;
int z, n, v[1000020];
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
v[x]++;
}
for (int i = 1; i <= 1000000; i++) {
for (int j = i + i; j <= 1000000; j += i) {
if (v[j] > 0) {
z += v[i];
break;
}
}
}
printf("%d\n", z);
}
每次i+i这样增速度肯定快!!吸取这种方法的好处。
c:c题是第一次尝试用大数,但是要打表才行。否则的话超时或者存不了。
这是一道斐波那契数列求是第几个。k<=10 0000
后10位是完全不一样的,所以取余。
代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
BigInteger k[]=new BigInteger[100006];
int i;
Scanner sc=new Scanner(System.in);
k[1]=new BigInteger("1");
k[2]=new BigInteger("2");
BigInteger haha=new BigInteger("10000000000");
for(i=3;i<=100000;i++)
{
k[i]=(k[i-1].add(k[i-2])).remainder(haha);
//System.out.println(i);
}
while(true)
{
BigInteger lala=sc.nextBigInteger();
lala=lala.remainder(haha);
for( i=1;i<=100000;i++)
{
if(k[i].equals(lala))
break;
}
System.out.println(i);
}
}
}