首页 > 其他分享 >阶乘之和

阶乘之和

时间:2024-08-07 13:52:45浏览次数:14  
标签:dd 自然数 long NIE 阶乘 数据 TAK

Description

给出⼀个自然数,求这个数是否能够表示成⼏个不同的正整数的阶乘之和。

Format

Input

有多组数据。

第⼀⾏⼀个正整数 T,表示共有 T 组数据。

接下来 T ⾏,每⾏⼀个自然数 N。

Output

输出 T ⾏。

如果该数可以被表示为⼏个不同的正整数的阶乘之和,输出“TAK”(不含引号)。

否则,输出“NIE”(同样不含引号)。

Samples

输入数据 1

10
3
27
2
33
75
9
28
33
31
1

Copy

输出数据 1

TAK
TAK
TAK
TAK
NIE
TAK
NIE
TAK
TAK
TAK

Copy

输入数据 2

2
4
0

Copy

输出数据 2

NIE
NIE

Copy

Limitation

【数据规模与约定】

对于 20% 的数据,有 1 ≤ T ≤ 10,自然数最⼤不超过 100

对于 40% 的数据,有 1 ≤ T ≤ 100,自然数最⼤不超过 1000

对于 60% 的数据,有 1 ≤ T ≤ 1000,自然数最⼤不超过 1000000

对于 100% 的数据,有 1 ≤ T ≤ 100000,所有自然数在 long long 范围内

#include<bits/stdc++.h>
using namespace std;
long long f[1001],dd=1,t,n=0,m,g;
int main(){
    ios::sync_with_stdio (false); 
    dd=1;
    for(int i=1;dd<=1e18;i++){
        dd*=i;
        f[++n]=dd;
    }
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>m;
        g=m;
        for(int j=n;j>=1;j--){
            if(g>=f[j]){
                g-=f[j];
            }
        }
        if(g==0&&m!=0){
            cout<<"TAK\n";
        }
        else{
            cout<<"NIE\n";
        }
    }

标签:dd,自然数,long,NIE,阶乘,数据,TAK
From: https://blog.csdn.net/bz02_2023f2/article/details/140990197

相关文章

  • 超详细明了的C语言函数递归,望周知。(包含求n的阶乘顺序打印⼀个整数的每⼀位求第n个斐
    1.递归是什么?递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。写⼀个史上最简单的C语⾔递归代码#include<stdio.h>intmain(){printf......
  • PTA 6-8 简单阶乘计算
    6-8简单阶乘计算(10分)本题要求实现一个计算非负整数阶乘的简单函数。函数接口定义:intFactorial(constintN);其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。裁判测试程序样例:#include<stdio.h>intFactorial(consti......
  • 使用递归函数计算阶乘时,我在 python 中遇到类型错误
    defcalc_fact(n):如果(n==1或n==0):返回1别的:n*calc_fact(n-1)print(calc_fact(5))试图创建函数来计算阶乘,不支持类型错误操作数*:对于int或Nonetype我不知道为什么谢谢Python代码中出现“类型错误:不支持的操作数类型为*:'int'和'NoneType'”表明你......
  • 【c语言】函数递归的一些例题1.编写一个函数,不许创建临时变量,求字符串长度 2.求n的阶
    1.intmy_strlen(char*str){   if(*str!='\0')   {      return1+my_strlen(str+1);//利用递归求字符串长度:递归一次就是多一个字符这样就可以求出字符串的长度了   }   else      return0;}intmain(){   //编写......
  • 递归算法【计算阶乘】
    递归算法是一种在计算机科学和数学中广泛使用的编程技巧,它允许函数直接或间接地调用自身以解决问题。递归的基本思想是将复杂的问题分解为更小的、相似的子问题,直到这些子问题足够简单可以直接解决为止。递归算法通常包含两个主要部分:基本情况(BaseCase):这是递归调用的终止......
  • 1172:求10000以内n的阶乘
    1172:求10000以内n的阶乘时间限制:1000ms      内存限制:65536KB提交数:51446   通过数: 16810【题目描述】求1000010000以内n的阶乘。【输入】只有一行输入,整数n(0≤n≤100000)。【输出】一行,即n!的值。【输入样例】4【输出样例】24#include<......
  • 8617 阶乘数字和
    这是一个关于计算阶乘结果所有位上的数字之和的问题。我们可以通过以下步骤来解决这个问题:1.首先,我们需要一个函数来计算阶乘。由于n的范围可以达到50,阶乘的结果可能非常大,所以我们需要使用一个可以处理大整数的数据类型,例如C++中的`std::vector<int>`来存储阶乘的结果。2.......
  • 1134高精度阶乘(数组)
    #include<stdio.h>#defineN3000//定义数组长度intmain(){inta[N],i,j,k,n;while(scanf("%d",&n)!=EOF){ for(i=0;i<N;i++)//初始化数组 a[i]=0; a[0]=1;//第一位设为1 k=0;//记录进位坐标 for(i=1;i<=n;i++)//计算阶乘......
  • 7-41 计算阶乘和
    对于给定的正整数N,需要你计算S=1!+2!+3!+...+N!。输入格式:输入在一行中给出一个不超过10的正整数N。输出格式:在一行中输出S的值。输入样例:3输出样例:9#include<stdio.h>intmain(){intn;scanf("%d",&n);inty=1;//y是单个数的阶乘"!"int......
  • CSP历年复赛题-P1009 [NOIP1998 普及组] 阶乘之和
    原题链接:https://www.luogu.com.cn/problem/P1009题意解读:  利用高精度计算阶乘之和,需要用到高精度乘法(高精度乘低精度)、高精度加法。  首先,思考不利用高精度如何解题,直观方法就是遍历i从1到n,每次乘i得到i的阶乘,然后累加到结果,代码如下:#include<bits/stdc++.h>usingnam......