一. 单选题(共1题,16.6分)
1. (单选题)
有函数定义:int f(int x,int y);则下列函数调用正确的为( )
- A.int n; n=f();
- B. int n,a=0,b=1;n=int f(x,y);
- C. int n,a=0,b=1;n=f(a,b);
- D.int n,a=0,b=1; n=f(int a,int b);
我的答案: C
二. 程序题(共5题,83.4分)
2. 自守数
题目编号:Exp03-Extend01,GJBook3-12-04
题目名称:自守数
题目描述:若一个正整数a满足条件 a^2 的尾数等于a,则称a为自守数,例如:
25^2=625 、76^2=5776 、9376^2=87909376 都是自守数。
编写程序,求小于等于n的所有自守数。
输入:从键盘随机输入一个正整数n(<10000000)。
输出:输出小于n的所有自守数,每个数之间以一个西文空格间隔。
样例1:
输入:10输出:1 5 6样例2:
输入:100输出:1 5 6 25 76
#include <iostream>
using namespace std;
int main()
{
int n = 0;
cin >> n;
long long x = 0;
cout << "1 ";
for (int i = 2;i < n;i++)
{
int j = 10000000;
x = i * i;
while (j / i >= 10)
{
j /= 10;
}
x %= j;
if (x == i)
cout << i << " ";
}
return 0;
}
谈一谈对这个题的想法:x=a*a
1.首先,厘清题目对 “自首数”的定义
2.其次,题目的关键在于如何寻找x的尾数
下面重点来讲第二点:仔细思考后会发现,