java小光棍数 输出四位完全平方数 3n+1问题精编版.docx
《java小光棍数 输出四位完全平方数 3n+1问题精编版.docx》由会员分享,可在线阅读,更多相关《java小光棍数 输出四位完全平方数 3n+1问题精编版.docx(13页珍藏版)》请在冰豆网上搜索。
![java小光棍数 输出四位完全平方数 3n+1问题精编版.docx](https://file1.bdocx.com/fileroot1/2022-12/7/04d239be-be5e-427c-b602-871092a988f5/04d239be-be5e-427c-b602-871092a988f51.gif)
java小光棍数输出四位完全平方数3n+1问题精编版
小光棍数
为了迎接一年一度光棍节的到来,让我们一起来看看小光棍数吧。
倘若一个数的三次方最后三位数是111,这样的数称为小光棍数。
从0开始计数,第一个小光棍数是471(471^3=104487111),请问第m个小光棍数是多少。
输入
第一行一个整数T表示有T组测试数据
接下来T行每行有一个数m
输出
输出第m个小光棍数
每次输出占一行
样例输入
1
1
样例输出
471
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
intn,t=input.nextInt();
while(t>0)
{
n=input.nextInt();
System.out.println(1000*(n-1)+471);
t=t-1;
}
}
}
输出四位完全平方数
ProblemDescription
输出所有形如aabb的四位完全平方数(即该四位数前2位数字相等,后2位数字相等,且该四位数是另外一个数的平方)。
输入
无
输出
按照从小到大输出4位完全平方数(每个数一行)
publicclassMain
{
publicstaticvoidmain(String[]args){
intsum;
intm,n,a,b,i;
for(sum=1000;sum<=9999;sum++)
{
m=sum/1000;
n=sum/100%10;
a=sum%10;
b=sum/10%10;
if(m==n&&a==b)
{
for(i=32;i<100;i++)
if(i*i==sum)
System.out.println(sum);
}
else
continue;
}
}
}
3n+1问题
ProblemDescription
任给一个正整数n,如果n为偶数,就将它变为n/2,如果为奇数,则将它乘3加1(即3n+1)。
不断重复这样的运算,经过有限步后,一定可以得到1。
输入
输入1个正整数n(n<=10^10)(多组数据)
输出
输出变化的次数(每组数据一行)
样例输入
3
样例输出
7
importjava.util.Scanner;
publicclassMain
{
publicstaticvoidmain(String[]args)
{
Scanners=newScanner(System.in);
while(s.hasNext())
{
intn=s.nextInt();
intsum=0;
while(n!
=1)
{
if(n%2==0)
{
n=n/2;
sum++;
}
else
{
n=3*n+1;
sum++;
}
}
System.out.println(sum);
}
}
}
继续求多项式
ProblemDescription
输入1个正整数n,
计算1+(1+2)+(1+2+3)+...+(1+2+3+...+n)
输入
输入正整数n(多组数据)
输出
输出1+(1+2)+(1+2+3)+...+(1+2+3+...+n)的值(每组数据一行)
样例输入
2
样例输出
4
importjava.util.Scanner;
publicclassMain
{
publicstaticvoidmain(String[]args){
Scanners=newScanner(System.in);
while(s.hasNext())
{
intn=s.nextInt();
intsum=0;
intden=0;
inti;
for(i=1;i<=n;i++)
{
den+=i;
sum+=den;
}
System.out.println(sum);
}
}
}
再求多项式(含浮点)
ProblemDescription
输入一个整数n,计算
1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...+2n-1)的值
输入
输入一个整数n(多组数据)
输出
出1+1/(1-3)+1/(1-3+5)+...+1/(1-3+5-...+2n-1)的值,保留2位小数(每组数据一行)
样例输入
1
样例输出
1.00
importjava.text.DecimalFormat;
importjava.util.Scanner;
publicclassMain
{
publicstaticvoidmain(String[]args){
Scanners=newScanner(System.in);
while(s.hasNext())
{
intn=s.nextInt();
doublet=0;
doublex=0;
intf=1;
inti;
for(i=1;i<=n;i++)
{
x+=f*(2*i-1);
t=t+1.0/x;
f=-f;
}
DecimalFormatdf=newDecimalFormat("#0.00");
System.out.println(df.format(t));
}
}
}
开灯问题
ProblemDescription
计算中心有8个机房,每个机房有n台电脑。
每台电脑都有一个编号,比如8号机房编号就为H1到Hn,我们有时又称为H1为1号机器,H2为2号机器,...。
有一天我们学校跻身世界高校100强,全校所有师生都进行了狂欢庆祝。
罗老师是个很爽快的人,也很喜欢喝酒,那天他喝多了点。
但不巧的是那天晚上正好罗老师值班,罗老师是个很负责的老师。
所以他就把8号机房打开了。
但同学们都还在狂欢,没一个人来上机。
罗老师提着一瓶酒,感觉到很无聊,所以他想玩个游戏。
第一回合,他喝了一口酒,他把所有的电脑都打开。
然后第二回合他喝了一口酒,他把编号是2,4,6,...的电脑全关了。
第三回合,他喝一口酒后就去操作所有编号是3,6,9,...,看到电脑开着就把它关掉,看到电脑关了就把它打开。
他重复这样操作共进行了n个回合。
当他操作完最后一个回合后,罗老师醉倒了。
现在给你这个机房电脑的数目,问你最后共有几台电脑开着?
输入
多组数据测试。
输入只有1行,这行有一个正整数,表示这个机房共有多少个电脑,该数是5到100之间的任意正整数。
输出
你必须输出最后开着的电脑数。
输出该数后不要忘了换行
样例输入
5
样例输出
2
importjava.util.Scanner;
publicclassMain
{
publicstaticvoidmain(String[]args)
{
Scanners=newScanner(System.in);
while(s.hasNext())
{
intn=s.nextInt();
int[]a=newint[n+1];
intx=0;
inti,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j%i==0)
{
if(a[j]==0)
{
a[j]=1;
}elseif(a[j]==1)
{
a[j]=0;
}
}
}
}
for(i=1;i<=n;i++)
{
if(a[i]==1)
{
x++;
}
}
System.out.println(x);
}
}
}
奖券数目
ProblemDescription
有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。
虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。
某抽奖活动的奖券号码是N位数,要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。
输入
输入奖券号码的位数N(1注:
首位不为零!
输出
输出不包含“4”的奖券的总数。
样例输入
5
样例输出
52488
importjava.util.Scanner;
publicclassMain
{
publicstaticvoidmain(String[]args){
Scanners=newScanner(System.in);
while(s.hasNext())
{
intn=s.nextInt();
inti;
longx=8;
for(i=1;i {
x=x*9;
}
System.out.println(x);
}
}
}
2n皇后问题
ProblemDescription
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。
现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。
问总共有多少种放法?
n小于等于8。
输入
输入的第一行为一个整数n,表示棋盘的大小。
接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。
输出
输出一个整数,表示总共有多少种放法。
样例输入
样例输入
4
1111
1111
1111
1111
样例输出
2
样例输入
4
1011
1111
1111
1111
样例输出
0
importjava.io.InputStreamReader;
importjava.util.Scanner;
publicclassMain
{
staticintn,m,map[][],Count;
staticbooleant[][],a[][],b[][];
publicstaticvoidmain(String[]args)
{
Scanners=newScanner(newInputStreamReader(System.in));
while(s.hasNext())
{
n=s.nextInt();
map=newint[n][n];
t=newboolean[n][n];
a=newboolean[3][2*n];
b=newboolean[3][2*n];
inti,j;
for(i=0;i for(j=0;j map[i][j]=s.nextInt();
Count=0;
dfs(0);
System.out.println(Count);
}
}
privatestaticvoiddfs(inti)
{
if(i==n)
{
Count++;
return;
}
for(intj=0;j{
if(!
t[i][j]&&map[i][j]!
=0)
{
if(!
a[0][i+j]&&!
a[1][n+i-j]&&!
a[2][j])
{
t[i][j]=true;
a[0][i+j]=a[1][n+i-j]=a[2][j]=true;
intk;
for(k=0; k {
if(!
t[i][k]&&map[i][k]!
=0)
{
if(!
b[0][i+k]&&!
b[1][n+i-k]&&!
b[2][k])
{
t[i][k] = true;
b[0][i+k]=b[1][n+i-k]=b[2][k]=true;
dfs(i+1);
t[i][k]=false;
b[0][i+k]=b[1][n+i-k]=b[2][k]=false;
}
}
}
t[i][j]=false;
a[0][i+j]=a[1][n+i-j]=a[2][j]=false;
}
}
}
}
}