- 点击跳转专栏=>Unity3D特效百例
- 点击跳转专栏=>案例项目实战源码
- 点击跳转专栏=>游戏脚本-辅助自动化
- 点击跳转专栏=>Android控件全解手册
- 点击跳转专栏=>Scratch编程案例
- 点击跳转=>软考全系列
- 点击跳转=>蓝桥系列
👉关于作者
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单。
👉实践过程
需要所有整理的文档可底部卡片联系我,直接发压缩包。
😜猜算式
你一定还记得小学学习过的乘法计算过程,比如:
273
x 15
------1365273
------4095
请你观察如下的乘法算式
***
x ***
--------*********
--------*****
星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)
请写出这个式子最终计算的结果,就是那个5位数是多少?
注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。
#include <bits/stdc++.h>
using namespace std;
int n;
int a[6];
int pd(){int p[20]={0};for(int i=0;i<6;i++){int k=0;while(a[i]){p[a[i]%10]++;if(p[a[i]%10]>2)return 0;a[i]/=10;k++;}if(k<3) return 0;}return 1;
}
int main()
{for(int i=100;i<=999;i++)for(int j=100;j<=999;j++){a[0]=(j%10)*i;a[1]=(j/10%10)*i; //a保存每一个状态的信息a[2]=(j/100)*i;a[3]=i*j;a[4]=i;a[5]=j;if(pd()){ //判断是否满足条件cout<<i*j<<" ";}}return 0;
}
😜排列序数
X星系的某次考古活动发现了史前智能痕迹。
这是一些用来计数的符号,经过分析它的计数规律如下:
(为了表示方便,我们把这些奇怪的符号用a~q代替)
abcdefghijklmnopq 表示0
abcdefghijklmnoqp 表示1
abcdefghijklmnpoq 表示2
abcdefghijklmnpqo 表示3
abcdefghijklmnqop 表示4
abcdefghijklmnqpo 表示5
abcdefghijklmonpq 表示6
abcdefghijklmonqp 表示7
…
在一处石头上刻的符号是:
bckfqlajhemgiodnp
请你计算出它表示的数字是多少?
请提交该整数,不要填写任何多余的内容,比如说明或注释。
#include <bits/stdc++.h>
using namespace std;
char s[]="abcdefghijklmnopq";
long long fc[18];
int flag[105];
int f(int b){int sum=0;for(int i='a';i<b;i++)if(flag[i]==0)sum++;flag[b]=1;return sum;
}
int main()
{char p[]="bckfqlajhemgiodnp";fc[1]=1;for(long long i=2;i<18;i++) //求阶层fc[i]=fc[i-1]*i;int len=strlen(s);long long sum=0;for(int i=0;i<len-1;i++){ //求每一位对应的值sum+=fc[len-1-i]*(f(p[i]));}cout<<sum<<endl;return 0;
}
😜还款计算
银行贷款的等额本息还款方法是:
每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入)。
比如说小明在银行贷款1万元。贷款年化利率为5%,贷款期限为24个月。
则银行会在每个月进行结算:
结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12)
则本月本金结余为:本金 + 利息 - 每月固定还款额
计算结果会四舍五入到“分”。
经计算,此种情况下,固定还款额应为:438.71
这样,第一月结算时的本金余额是:
9602.96
第二个月结算:
9204.26
第三个月结算:
8803.9
…
最后一个月如果仍按固定额还款,则最后仍有0.11元的本金余额,
但如果调整固定还款额为438.72, 则最后一个月会多还了银行0.14元。
银行会选择最后本金结算绝对值最小的情况来设定 每月的固定还款额度。
如果有两种情况最后本金绝对值相同,则选择还款较少的那个方案。
本题的任务是已知年化利率,还款期数,求每月的固定还款额度。
假设小明贷款为1万元,即:初始本金=1万元。
年化利率的单位是百分之多少。
期数的单位为多少个月。
输入为2行,
第一行为一个小数r,表示年率是百分之几。(0<r<30)
第二行为一个整数n,表示还款期限。 (6<=n<=120)
要求输出为一个整数,表示每月还款额(单位是:分)
例如:
输入:
4.01
24
程序应该输出:
43429
再比如:
输入:
6.85
36
程序应该输出:
30809
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
java选手注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
java选手注意:主类的名字必须是:Main,否则按无效代码处理。
c/c++选手注意: main函数需要返回0
c/c++选手注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
c/c++选手注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。
#include <bits/stdc++.h>
using namespace std;
double r;
int n;
double sol(double x){int a=(x+0.005)*100;return a/100.0;
}
int main()
{cin>>r>>n;double money=10000.0/n; //从最小开始枚举money=sol(money); //精确到分 四舍五入double ans,minn=10000000; //ans 答案 minn保存最近答案的数for(;1;money+=0.01){ //每次递增0.01double total=10000; //初始化金钱for(int i=0;i<n;i++){ //算n个月过后还剩多少钱double lx=total*(0.01*r/12);total+=-money+lx;total=sol(total);}if(total<0){ //小于就退出if(fabs(total)<minn)ans=money;break;}ans=money;}cout<<(int)(ans*100)<<endl;return 0;
}
😜滑动解锁
滑动解锁是智能手机一项常用的功能。你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点。这些划过的点所组成的有向折线,如果与预设的折线在图案、方向上都一致,那么手机将解锁。
所谓两个点“相邻”:当且仅当以这两个点为端点的线段上不存在尚未经过的点。
此外,许多手机都约定:这条折线还需要至少经过4个点。
为了描述方便,我们给这9个点从上到下、从左到右依次编号1-9。即如下排列:
1 2 3
4 5 6
7 8 9
那么1->2->3是非法的,因为长度不足。
1->3->2->4也是非法的,因为1->3穿过了尚未经过的点2。
2->4->1->3->6是合法的,因为1->3时点2已经被划过了。
某大神已经算出:一共有389112种不同的解锁方案。没有任何线索时,要想暴力解锁确实很难。
不过小Hi很好奇,他希望知道,当已经瞥视到一部分折线的情况下,有多少种不同的方案。
遗憾的是,小Hi看到的部分折线既不一定是连续的,也不知道方向。
例如看到1-2-3和4-5-6,
那么1->2->3->4->5->6,1->2->3->6->5->4, 3->2->1->6->5->4->8->9等都是可能的方案。
你的任务是编写程序,根据已经瞥到的零碎线段,求可能解锁方案的数目。
输入:
每个测试数据第一行是一个整数N(0 <= N <= 8),代表小Hi看到的折线段数目。
以下N行每行包含两个整数 X 和 Y (1 <= X, Y <= 9),代表小Hi看到点X和点Y是直接相连的。
输出:
对于每组数据输出合法的解锁方案数目。
例如:
输入:
8
1 2 2 3
3 4 4 5
5 6 6 7
7 8 8 9
程序应该输出:
2
再例如:
输入:
4
2 4
2 5
8 5
8 6
程序应该输出:
258
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
#include <bits/stdc++.h>
using namespace std;
int fx[16][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1},{-1,-2},{-1,2},{1,-2},{1,2},{-2,-1},{-2,1},{2,-1},{2,1}}; //16个方向
int fx2[8][4]={ //8个方向 要往上上 下下 左左 右右走 (保存上 然后走上上的时候好判断) {-1,0,-2,0},{1,0,2,0},{0,-1,0,-2},{0,1,0,2},{-1,-1,-2,-2},{-1,1,-2,2},{1,-1,2,-2},{1,1,2,2}};
int n;
vector<int> vec[10]; //每个点的联通
int flag[10][10]; //标记走过的点
int sum=0; //总数
class Pion{ //保存每个点的坐标public :int x,y;
};
Pion p[10]; //有9个点
int pd(int x,int y){ //判断符合条件if(x>0 && x<=3 && y>0 && y<=3 && flag[x][y]==0)return 1;return 0;
}
int pd2(int x,int y){ if(x>0 && x<=3 && y>0 && y<=3 && flag[x][y]==1)return 1;return 0;
}
void dfs(int k,int u,int s,int last){ //u表示 前一个属于连通点 s表示用了多少个连通点 last上一个点的标号if(s==n) //符合条件sum++;if(u==0 && vec[k].size()>1) return ;if(vec[k].size()>u){ // 该点是连通点只有一个方向for(int i=0;i<vec[k].size();i++)if(vec[k][i]!=last){int kk=vec[k][i];flag[p[kk].x][p[kk].y]=1;dfs(kk,1,s+1,k);flag[p[kk].x][p[kk].y]=0;}}else{ //枚举每个方向 16+8个方向for(int i=0;i<16;i++){ /int x=p[k].x+fx[i][0],y=p[k].y+fx[i][1];if(pd(x,y)){flag[x][y]=1;dfs(3*(x-1)+y,0,s,k);flag[x][y]=0;}}for(int i=0;i<8;i++){int x=p[k].x+fx2[i][0],y=p[k].y+fx2[i][1];int x2=p[k].x+fx2[i][2],y2=p[k].y+fx2[i][3];if(pd2(x,y) && pd(x2,y2)){flag[x2][y2]=1;dfs(3*(x2-1)+y2,0,s,k);flag[x2][y2]=0;}}}
}
int main()
{cin>>n;int a,b;for(int i=0;i<n;i++){ //保存联通点cin>>a>>b;vec[a].push_back(b);vec[b].push_back(a);}for(int i=1,k=1;i<=3;i++)for(int j=1;j<=3;j++,k++) //保存点的坐标p[k].x=i,p[k].y=j;for(int i=1;i<=3;i++)for(int j=1;j<=3;j++){ //每个点入口枚举int k=3*(i-1)+j; //坐标判断点flag[p[k].x][p[k].y]=1;dfs(k,0,0,0); flag[p[k].x][p[k].y]=0;}cout<<sum<<endl;return 0;
}
👉其他
📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。
温馨提示:点击下方卡片获取更多意想不到的资源。