C#求自守数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 自守数
{
    class Program
    {
        static void Main(string[] args)
        {
            long faciend, num, mod, n_mod, p_mod;//mod被乘数的系数,n_mod乘数的系数。p_mod部分乘数
            long i, t, n;//临时变量
            Console.Write("输入最大数:");
            num = int.Parse(Console.ReadLine());
            Console.WriteLine("1--" + num + "之间有以下自守数:");
            for (i = 1; i < num; i++)
            {
                faciend = i;//被乘数
                mod = 1;
                do
                {
                    mod *= 10;//被乘数的系数
                    faciend /= 10;
                } while (faciend > 0);//循环求出被乘数的系数
                p_mod = mod;//p_mod为截取部分积时的系数
                faciend = 0;//积的最后N位
                n_mod = 10;//n_mod为截取乘数相应位时的系数
                while (mod > 0)
                {
                    t = i % (mod * 10);//获取被乘数
                    n = i % n_mod - i % (n_mod / 10);//分解出每一位乘数作为乘数
                    t = t * n;//相乘的结果
                    faciend = (faciend + t) % p_mod;//截取乘积的后几位
                    mod /= 10;//调整被乘数的系数
                    n_mod *= 10;//调整乘数的系数
                }
                if (i == faciend)//若为自守数,则输出
                {
                    Console.Write(i+"  ");
                }
            }

            Console.ReadKey();
        }
    }
}

时间: 2024-10-11 18:12:08

C#求自守数的相关文章

java笔试之自守数

链接:https://www.nowcoder.com/profile/108908/codeBookDetail?submissionId=2256243来源:牛客网 自守数是指一个数的平方的尾数等于该数自身的自然数.例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376.请求出n以内的自守数的个数 接口说明 /*功能: 求出n以内的自守数的个数 输入参数:int n 返回值:n以内自守数的数量.*/ public static int CalcAutomorp

判断一个int型数字是否是自守数

自守数 如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数. 显然,5和6是一位自守数(5x5=25 6x6=36),25x25=625 76x76=5776,所以25和76是两位自守数. 详细描述: 接口说明 原型: Public static boolean isAutoMorphicNum( int num) 输入参数: num 需要判断的数 输出参数(指针指向的内存区域保证有效): 无 返回值: true 是自守数 false 不是自守数 涉及知识点: JAVA语言基础:数字

华为机试-自守数

题目描述自守数是指一个数的平方的尾数等于该数自身的自然数.例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376.请求出n以内的自守数的个数 接口说明 /*功能: 求出n以内的自守数的个数 输入参数:int n返回值:n以内自守数的数量.*/ public static int CalcAutomorphicNumbers( int n){/*在这里实现功能*/return 0;} 输入描述:int型整数输出描述:n以内自守数的数量.示例1输入 2000输出 8

算法15---数论4---自守数

算法15---数论4---自守数 如果一个正整数的平方的末尾几位数等于这个数本身,那么这个数便称为自守数. 自守数有如下的一些性质 (1) 以自守数为后几位的两数相乘,结果的后几位仍是自守数: (2) n+1位的自守数出自n为的自守数. (3) 两个n位子守数的和等于10的n次方加1. 我们给出两种自守数的算法 1 /* 2 题目:自守数 3 author taoliu——alex 2016.10 4 5 主要实现: 6 判断自守数: 7 8 */ 9 10 11 #include <stdio

【华为OJ】【060-自守数】

[华为OJ][算法总篇章] [华为OJ][060-自守数] [工程下载] 题目描述 自守数是指一个数的平方的尾数等于该数自身的自然数.例如:252 = 625,762 = 5776,93762 = 87909376. 请求出n以内的自守数的个数 接口说明 /** * 功能: 求出n以内的自守数的个数 * * 输入参数:int n * 返回值:n以内自守数的数量. */ public static int calcAutomorphicNumbers(int n) { /*在这里实现功能*/ re

判断自守数

题目描述: 如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数. 显然,5和6是一位自守数(5x5=25 6x6=36),25x25=625 76x76=5776,所以25和76是两位自守数. 输入一个数,判断该数是否为自守数. 解题思路:若采用"求出一个数的平方后再截取最后相应位数"的方法,显然是不可取的,因为计算机无法表示过大的整数.所以我们采取大数相乘的思想来存储这个数的平方.然后再去判断该平方项的后几位是否与原数相等. import java.util.Scanne

分治法 求 逆序对数 的个数 时间复杂度为O(n*logn)

思路: 分治法 归并排序的过程中,有一步是从左右两个数组中,每次都取出小的那个元素放到tmp[]数组中 右边的数组其实就是原数组中位于右侧的元素.当不取左侧的元素而取右侧的元素时,说明左侧剩下的元素均比右侧的第一个元素大,即均能构成一个逆序对.假设现在左侧剩余n个元素,则逆序对数+n. 另外,如果当所有右侧的元素都取完,但是左侧仍然有元素剩余时,左侧剩余的元素已经在之前的运算中加到了逆序对中,不需要再添加一次 下面给出 归并排序 和 求逆序对数 两份代码: code1: 归并排序 #includ

自守数

import java.util.Scanner; public class GetSelfConttrolledNum { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int count = getSelfControlledNum(num); System.out.println(count); } private static in

分页过滤SQL求总条数SQL正则

public static void main(String[] args) throws Exception { String queryForScanUsers_SQL = "select a.username AS user_name,b.* from tbl_aaa a left join tbl_bbb b where a.id=? limit 10"; //去除WHERE和LIMIT String sqlRegex = "(select\\s+)(.*)(\\s+